Map Collection은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식) 사용
JDK 1.2부터 제공된 HashMap 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠르다.
HashMap 클래스는 Map 인터페이스를 구현하므로, 중복된 키로는 값을 저장할 수 없다.
하지만 같은 값을 다른 키로 저장하는 것은 가능하다.
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("십", 10);
hm.put("이십", 20);
System.out.println("맵에 저장된 키들의 집합 : " + hm.keySet());
for (String key : hm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
hm.remove("십");
Iterator<String> keys = hm.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
hm.replace("이십", 200);
for (String key : hm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
System.out.println("맵의 크기 : " + hm.size());
맵에 저장된 키들의 집합 : [이십, 십]
키 : 이십, 값 : 20
키 : 십, 값 : 10
키 : 이십, 값 : 20
키 : 이십, 값 : 200
맵의 크기 : 1
이진 검색 트리는 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠르다.
JDK 1.2부터 제공된 TreeMap 클래스는 NavigableMap 인터페이스를 기존의 이진 검색 트리의 성능을 향상시킨 레드-블랙 트리(Red-Black tree)로 구현한다.
TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
tm.put(30, "삼십");
tm.put(40, "사십");
System.out.println("맵에 저장된 키들의 집합 : " + tm.keySet());
for (Integer key : tm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, tm.get(key)));
}
tm.remove(40);
Iterator<Integer> keys = tm.keySet().iterator();
while (keys.hasNext()) {
Integer key = keys.next();
System.out.println(String.format("키 : %s, 값 : %s", key, tm.get(key)));
}
tm.replace(20, "twenty");
for (Integer key : tm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, tm.get(key)));
}
System.out.println("맵의 크기 : " + tm.size());
맵에 저장된 키들의 집합 : [30, 40]
키 : 30, 값 : 삼십
키 : 40, 값 : 사십
키 : 30, 값 : 삼십
키 : 20, 값 : twenty
키 : 30, 값 : 삼십
맵의 크기 : 2
모두 static 메서드로 구성
컬렉션 타입의 객체에 대한 객체 생성, 정렬, 병합, 검색 등의 알고리즘을 구현
가장 큰 요소 / 가장 작은 요소 반환
List<Integer> arr = Arrays.asList(list);
Integer[] list = { 1, 2, 3, 4, 5 };
List<Integer> arr = new ArrayList<>(Arrays.asList(list));
System.out.println(Collections.max(arr)); // 5
System.out.println(Collections.min(arr)); // 1
Integer[] list = { 3, 1, 2, 4, 5 };
List<Integer> arr = new ArrayList<>(Arrays.asList(list));
Collections.sort(arr);
System.out.println(arr); // [1, 2, 3, 4, 5]
Integer[] list = { 1, 2, 3, 4, 5 };
List<Integer> arr = new ArrayList<>(Arrays.asList(list));
Collections.shuffle(arr);
System.out.println(arr); // [2, 4, 5, 1, 3]
Integer[] arr = {1,2,3,4,5};
List<Integer> list = new ArrayList<>(Arrays.asList(arr));
Collections.reverse(list);
System.out.println(list); // [5, 4, 3, 2, 1]