record logo record

목차

Map(java.util.Map)

Map 주요 메서드

HashMap

Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
map.put("key2", 2);
map.put("key3", 3);
System.out.println(map.get("key1"));// 1

순서를 보장하지 않는 이유?

순서를 보장하지 않는다는 말은 즉, 정렬되지 않는다는 것을 의미합니다. 그 이유는 HashMap의 경우 기본적으로 key값이 객체의 hashCode() 메소드의 리턴 값을 기반으로 관리하기 때문에 HashMap으로 관리되는 데이터 전체를 출력했을 때는 순서가 뒤섞여서 출력됨을 볼 수 있습니다.

따라서, 해시 함수를 사용하기 때문에 HashMap의 탐색 시간복잡도는 O(1) 입니다.

Map<String, String> map = new HashMap<>();
map.put("apple", "red");
map.put("banana", "yellow");
map.put("melon", "green");
for (Map.Entry<String,String> data : map.entrySet()) {
    System.out.println(data.getKey() + " " + data.getValue());
}
/*Result
banana yellow
apple red
melon green
*/

HashTable

TreeMap

Map<String, String> map = new TreeMap<>();
map.put("apple", "red");
map.put("banana", "yellow");
map.put("melon", "green");
for (Map.Entry<String,String> data : map.entrySet()) {
    System.out.println(data.getKey() + " " + data.getValue());
}
/*Result
apple red
banana yellow
melon green
*/

LinkedHashMap

Map<String, String> map = new LinkedHashMap<>();
map.put("c", "1");
map.put("a", "2");
map.put("b", "3");
map.put("m", "4");
for (Map.Entry<String,String> data : map.entrySet()) {
    System.out.println(data.getKey() + " " + data.getValue());
}
/*Result
c 1
a 2
b 3
m 4
*/

References