JAVA, MAP
Mention : JAVA의 MAP에 대해서 공부, 정리해보자 🗺
알고리즘 문제를 풀 때, 유용하게 쓸 수 있을 것 🧐
-
맵(Map)은 사전(dictionary)과 비슷하다. 즉, people 이란 단어에 “사람”, baseball 이라는 단어에 “야구”라는 뜻이 부합되듯이 Map은 Key와 Value를 한 쌍으로 갖는 자료형이다.
key value people 사람 baseball 야구 - Map은 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다. 맵(Map)의 가장 큰 특징이라면 key로 value를 얻어낸다는 점이다. baseball이란 단어의 뜻을 찾기 위해서 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 baseball이라는 단어가 있는 곳만을 펼쳐보는 것이다.
- Map 역시 List와 마찬가지로 인터페이스이다. Map 인터페이스를 구현한 Map 자료형에는 HashMap, LinkedHashMap, TreeMap 등이 있다.
HashMap
- Key-Value의 Pair를 관리하는 클래스
- ‘Hashing을 한다’ 라고도 표현한다.
- put, get 메서드를 통해 pair를 추가 및 value를 얻을 수 있다.
- getOrDefault
- 맵의 key에 해당하는 value가 없을 경우에 get 메서드를 사용하면 null이 리턴된다.
- containsKey
- containsKey 메서드는 맵(Map)에 해당 키(key)가 있는지를 조사하여 그 유무를 참, 거짓으로 리턴한다.
- remove
- remove 메서드는 맵(Map)의 항목을 삭제하는 메서드로 key값에 해당되는 아이템(key, value)을 삭제한 후 그 value 값을 리턴한다.
- size
- size 메서드는 Map의 갯수를 리턴한다.
- keySet
- keySet은 맵(Map)의 모든 Key를 모아서 리턴한다.
- key 값 중복 시 마지막에 추가된 key 값으로 저장 및 출력이 된다 🤯
- key 값은 중복이 될 수 없다!
package hashMap;
import java.util.HashMap;
public class HashPrac {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("area1", "seoul");
map.put("area2", "gangwon");
System.out.println(map.get("area1")); //seoul 출력
System.out.println(map.get("area2")); //gangwon 출력
System.out.println(map.get("area3")); //null 출력
System.out.println(map.getOrDefault("area3", "위치정보가 없습니다."));
//위치정보가 없습니다. 출력
System.out.println(map.containsKey("area2")); //true 출력
System.out.println(map.size()); //2 출력
System.out.println(map.keySet()); //[area1, area2] 출력
System.out.println(map.remove("area2")); //맵의 항목을 삭제 후 area2 출력
}
}
LinkedHashMap과 TreeMap
Map의 가장 큰 특징은 순서에 의존하지 않고 key로 value를 가져오는데 있다. 하지만 가끔은 Map에 입력된 순서대로 데이터를 가져오고 싶은 경우도 있고 때로는 입력된 key에 의해 소트되도록 저장하고 싶을 수도 있을 것이다. 이런경우에는 LinkedHashMap과 TreeMap을 사용하는 것이 유리하다.
- LinkedHashMap은 입력된 순서대로 데이터를 저장하는 특징을 가지고 있다.
- TreeMap은 입력된 key의 오름차순 순서로 데이터를 저장하는 특징을 가지고 있다.
Reference 📝
https://wikidocs.net/208
Leave a comment