Collection Framework
는 자바에서 빠질 수 없는 필수적인 요소다. Collection
은 다수의 요소를 하나의 그룹으로 묶어서 효율적으로 저장 및 관리할 수 있는 기능을 제공하고 있는 일종의 Container 라고 생각하면 된다. 즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 클래스로 구현해 놓은 것이다.(이러한 컬렉션 프레임워크는 interface
를 사용하여 구현됨.)
Collection Framework
의 장점은 크게 4가지라고 할 수 있다.
컬렉션 프레임워크에서는 데이터를 저장하는 자료구조에 따라 크게 3가지 인터페이스를 정의하고 있다.
순서가 있는 데이터의 집합으로, 데이터의 중복을 허용하는 자료구조.
- Vector
- ArrayList
- LinkedList
- Stack
- Queue
순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않는 자료구조.
- HashSet
- TreeSet
키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음. 중복되는 키는 허용하지 않지만 중복되는 값은 허용됨.
- HashMap
- TreeMap
- Hashtable
- Properties
List<int> arr = new ArrayList<int>();
arr.add(0);
arr.add(1);
arr.add(2);
arr.add(3);
Collection Framework 의 계층은 다음과 같다.
ArrayList
를 사용하여 Collection Framework 사용의 예시를 들어보자.
public class Ex01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Eddie");
list.add("Nketiah");
list.add("Arteta");
System.out.println("list의 크기 : " + list.size());
System.out.println("세번째 값 : " + list.get(3));
for(int i=0; i<list.size(); i++) {
System.out.println("list["+i+"]번째 : "+list.get(i));
}
list.clear(); // 모든 요소 제거
System.out.println("list의 크기 >>> " + list.size()); // 0
list.add("Eddie");
list.add("Nketiah");
list.add("Arteta");
list.remove(2);
for(int i=0; i<list.size(); i++) {
System.out.println("list["+i+"]번째 : "+list.get(i));
}
list.add(2, "사카");
for(int i=0; i<list.size(); i++) {
System.out.println("list["+i+"]번째 : "+list.get(i));
}
}
}
이제 HashMap
에 대해 알아보자
HashMap
의 특징은 다음과 같다.
- 같은 키의 값을 삽입하려고하면 해당 키의 값이 변경이 됨.
- 키는 고유한 속성이지만 값은 고유한 속성이 아님
- 키는 중복이 되지 않지만 값은 중복이 될 수 있음.
- 다른 특징으로는 HashTable과 유사하지만 동기화가 되지 않고 Null값도 저장이 가능함.
그렇다면 HashMap
을 사용하는 예시를 알아보자.
// 선언
HashMap<Integer,String> map = new HashMap<Integer,String>(){{//초기값 지정
put(1,"Eddie");
put(2,"Arteta");
put(3,"Saka");
}};
System.out.println(map); // 전체 출력 : {1=Eddie, 2=Arteta, 3=Saka}
System.out.println(map.get(1)); // key값 1의 value얻기 : Eddie
//entrySet() 활용
for (Entry<Integer, String> entry : map.entrySet()) {
System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
//[Key]:1 [Value]:Eddie
//[Key]:2 [Value]:Arteta
//[Key]:3 [Value]:Saka
//저장된 key값 확인
for(Integer i : map.keySet()){
System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도