작성일 2024. 2. 16
자바에서 Map은 키와 값을 쌍으로 저장하는 자료구조를 나타낸다.
인터페이스를 구현하는 클래스로는 대표적으로 HashMap, TreeMap, LinkedHashMap 등이 있다.
Map 인터페이스를 구현한 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식을 사용한다.
요소의 저장 순서를 유지하지 않는다.
key는 중복을 허용하지 않고, value는 중복을 허용한다.
동일한 key값으로 넣을 시 최근에 넣은 값이 적용된다.
💡HashMap은 저장 순서를 유지하지 않으나, LinkedHashMap은 저장된 순서를 유지한다. 순서가 중요한 경우에는 LinkedHashMap을 사용하는 것이 좋다.
본 글에서는 가장 많이 사용되는 HashMap을 기준으로 Map의 사용법에 대해 알아볼 것이다.
Map<KeyType, ValueType> map = new HashMap<>();
Map<Integer,String> map = new HashMap<>();
map.put(key,value);
map.put(1,"lala");
map.put(3,"pingping");
map.get(key);
map.get(1);
// 값 출력하기
System.out.println("map.get(1) = " + map.get(1));
// 변수에 값 저장하기(value의 type에 맞게 꺼내야 한다.)
String value = map.get(1);
map.remove(key);
map.remove(1);
map.size();
int size = map.size(); //int형 반환
containsKey(key);
boolean containsKey = map.containsKey(4);
System.out.println("containsKey = " + containsKey);
키 값 중에 '4'라는 값이 존재하는지 알고 싶다면 containsKey() 메서드를 이용할 수 있다. boolean값으로 반환되어 key값의 존재 유무를 알려준다.
containsValue(value);
boolean containsValue = map.containsValue("roro");
System.out.println("containsValue = " + containsValue);
containsKey()사용법과 동일하다. key대신 value값이 map에 존재하는지 확인하고 싶을 때 사용한다.
for (KeyType key : map.keySet()) {...}
for (Integer key : map.keySet()) {
// 활용 예시
map.get(key); //key로 value조회
boolean equal = key.equals(1); //특정 key값과 일치 여부 확인
}
💡keySet은 Set으로 반환된다. Set keySet = map.keySet();
for (ValueType value : map.values()) {...}
for (String value : map.values()) {
// 활용 예시
System.out.println("value = " + value);
boolean equal = value.equals("ping"); //특정 value값과 일치 여부 확인
}
💡map.values()는 Collection으로 반환된다. Collection collection = map.values();
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {...}
for (String value : map.values()) {
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println("key="+key+" / value="+value);
}
출력메서드(map);
System.out.println(map); //{1=lala, 3=pingping}
결과: {key1=value1,key2=value2,...}