Hashtable<String, Integer> map = new Hashtable<>();
map.put("A", 1);
map.put("B", 2);
map.get("key");
map.getOrDefault("key", "defaultValue"); // 해당하는 값이 없다면 기본값 반환
map.put("A", 1);
map.put("A", 10); // A는 10으로 덮어쓰기
map.put("A", 1);
map.putIfAbsent("A", 10); // A는 계속 1
map.remove("key");
map.remove("B", 3); // key와 value가 모두 일치해야만 remove
map.replace("A", 10);
map.replace("A", "oldVal", "newVal"); // key와 value가 일치해야만 새 값으로 덮어쓰기
map.values();
map.keySet();
Map<MyData, Integer> map = new HashMap<>();
map.put(new MyData(1), 1);
map.put(new MyData(2), 2);
map.get(new MyData(1)); // 값을 못 찾아옴. Hash값이 다르기 때문
// Custom 객체를 Map의 Key로 사용하려면 hashCode() 값을 알아야 함 (객체에 hashCode 함수 Override)
map의 entrySet 을 사용하면 key, value 쌍의 목록을 얻을 수 있음
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
keySet을 사용해서 key의 목록을 얻고, 이를 통해 value를 얻어 사용
for (String key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
entrySet 이나 keySet 모두 Set 으로 제공되고 Collection에서 제공되는 Iterator를 사용 가능
Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
var entry = iter.next(); // 타입추론
System.out.println(entry.getKey() + ":" + entry.getValue());
}