[JAVA] Collection Framework
Collection Framework 은 다수의 데이터를 쉽고,
효과적으로 다루기 위해, 표준화된 방법을 제공하는 클래스들을 모아놓은 집합이다.
쉽게 생각하면, 크기 지정 필요없는 편리한 배열이라고 생각하면 된다.
이것을 사용하면 배열의 단점인 길이고정을 해결할수 있다.
java.util.Collection 에 속해있어, 상단에 import java.util.* 을 입력해 사용할 수 있다.
Collection Framwork의 주요 인터페이스는 다음과 같다.
- List
- Set
- Map
이 중에서 List와 Set 인터페이스는 모두 Collection 인터페이스를 상속받지만,
구조상의 차이로 인해 Map 인터페이스는 별도로 정의한다.
- List, Set, Map 의 구현 클래스

*<E> : 사용자가 타입을 정함. ex) Vector<String>
*<K, V> : 키와 값을 뜻함 ex) <Integer, String>
*List<E>
List 는 데이터의 순서가 있어, 들어온 순서대로 저장된다. 데이터의 중복이 가능하다.
List에 2, 3, 5, 4, 1, 1 을 넣으면, 배열 번호가 생기며 2 는 [0], 3은[1], 5는[2], 4는[3] 이런 순서대로 들어가
구현 클래스로는 Vector, ArrayList 등이 있다.
*순서가 있다는 뜻은 숫자 순서대로 들어간다는 뜻이 아님. 말그대로 들어온 순서대로 저장된다는 뜻
*Set<E>
Set은 데이터의 순서가 없어 정렬되어 저장된다. 데이터의 중복이 불가능하다.
Set에 2, 3, 5, 4, 1, 1 을 넣으면, 넣은 순서 상관없이 정렬되고, 중복은 제거되어 1, 2, 3, 4, 5 로 들어간다.
구현 클래스로는 HashSet, TreeSet이 있다.
*Map<K , V>
Map은 키를 통해 저장하므로, 데이터의 순서가 없이 저장된다. 키의 중복은 불가능 하나, 값의 중복은 가능하다.
K 는 Key , V 는 Value이다.
구현 클래스로는 HashMap, TreeMap 등이 있다.
- List, Set, Map 예시 (Vector, HashSet, HashSet)
import java.util.*;
public class v1 {
public static void main(String[] args) {
Vector<Integer> v=new Vector<Integer>(); // List의 구현 클래스중 하나
HashSet<Integer> hs=new HashSet<Integer>(); // Set의 구현 클래스중 하나
HashMap<Integer,String> hm=new HashMap<Integer, String>(); // Map의 구현 클래스중 하나
v.add(2);
v.add(1);
v.add(14);
v.add(1);
hs.add(2);
hs.add(1);
hs.add(14);
hs.add(1);
hm.put(1, "BTS");
hm.put(2, "Highlight");
hm.put(3, "NCT");
System.out.println("\nv size :"+v.size());
System.out.println("v :"+v);
System.out.println("v[0] :"+v.get(0));
System.out.println("v[1] :"+v.get(1));
System.out.println("v[2] :"+v.get(2));
System.out.println("v[3] :"+v.get(3));
System.out.println("\nhs size :"+hs.size());
System.out.println("hs :"+hs);
System.out.println("\nhm size : "+hm.size());
System.out.println("hm : "+hm);
System.out.println("hm[1] :"+hm.get(1));
System.out.println("hm[2] :"+hm.get(2));
System.out.println("hm[3] :"+hm.get(3));
}
}
-결과

* v : 순서 있음. 중복 가능
* hs : 순서 없음. 중복 불가
* hm : 순서없음. 키는 중복불가, 값은 중복가능
* v : Vector, hs : HashSet, hm : HashSet
Vector, HashSet, HashSet에 대한 자세한 정보는 아래 링크에서 살펴보자.
Vector (Java SE 18 & JDK 18) (oracle.com)
HashSet (Java SE 18 & JDK 18) (oracle.com)
HashMap (Java SE 18 & JDK 18) (oracle.com)