Map은 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻습니다.
맵(Map) key
와 value
한 쌍으로 이루어져 있으며, key를 통해 value를 찾습니다.
Map 인터페이스를 구현한 Map 자료형에는 HashMap, LinkedHashMap, TreeMap 등이 있습니다. 그중 가장 많이 사용하는 HashMap에 대하여 알아봅시다.
put 메서드를 이용해 HashMap에 데이터를 추가할 수 있습니다.
import java.util.HashMap;
public class Sample {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("people", "사람");
map.put("baseball", "야구");
}
}
HashMap 역시 제네릭스를 이용합니다. 위의 HashMap의 제네릭스는 Key, Value 모두 String 타입입니다. 따라서 Key, Value에 String 이외의 자료형은 사용할수 없습니다.
get 메서드를 이용해 key에 해당하는 value 값을 받을 수 있습니다.
System.out.println(map.get("people")); // "사람" 출력
🔔 getOrDefault
맵의 key에 해당하는 value가 없을 경우에 get 메서드를 사용하면 다음처럼 null이 리턴됩니다.
null 대신 디폴트 값을 얻고 싶은 경우에는getOrDefault
메서드를 사용합니다.System.out.println(map.getOrDefault("java", "자바")); // "자바" 출력
containsKey 메서드는 맵(Map)에 해당 키(key)가 여부를 확인하여 그 유무를 true, false으로 리턴합니다.
System.out.println(map.containsKey("people")); // true 출력
remove 메서드는 맵(Map)의 항목을 삭제하는 메서드입니다.
key값에 해당되는 아이템(key, value)을 삭제한 후 그 value 값을 리턴합니다.
System.out.println(map.remove("people")); // "사람" 출력
size 매서드는 맵(Map)의 갯수를 리턴합니다.
System.out.println(map.size());
"people", "baseball" 두 값중 "people"항목을 삭제했으므로, 1이 출력됩니다.
keySet() 메서드는 Map의 모든 Key를 모아서 Set 자료형으로 리턴합니다.
import java.util.HashMap;
public class Sample {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("people", "사람");
map.put("baseball", "야구");
System.out.println(map.keySet()); // [baseball, people] 출력
}
}
[baseball, people]
List
자료형으로 바꾸어 사용할 경우 다음과 같이 쓸 수 있습니다.List<String> keyList = new ArrayList<>(map.keySet());
🤔 LinkedHashMap과 TreeMap
LinkedHashMap은 입력된 순서대로 데이터를 저장하는 특징을 가지고 있다.
TreeMap은 입력된 key의 오름차순 순서로 데이터를 저장하는 특징을 가지고 있다.