[JAVA] Map?

김가희·2023년 3월 2일

❓Map

key - value 형식으로 데이터를 저장하는 자료형이다.

💌 종류

1. HashMap
접근, 삽입, 삭제 시간 복잡도가 O(1)으로 Key와 Value를 묶어서 하나의 entry로 저장한다. 그러므로 검색 속도가 매우 빠르다. 하지만 순서가 저장되지 않는다. 만약 순서를 저장하고 싶다면 아래와 같은 Map을 사용하면 된다.

2. TreeMap
key값에 따라 오름차순 정렬한다. 이진 탐색 트리를 향상시킨 레드 블랙 트리로 구현되어 있으며 접근 연산자의 시간 복잡도는 O(log n)이다. 정렬을 하기 때문에 Hash Map보다 삽입/삭제시 오래걸린다.

3. LinkedHashMap
삽입 순서에 따라 정렬되며 시간 복잡도는 O(1)이다. 하지만 불필요하게 Linked 를 유지할 수도 있기때문에 HashMap을 추천한다.(라고한다.)

4. HashTable
key-value에 null값을 넣을 수 없고 동기화 된다고한다. HashMap과 같은 동작을 하며 기존 코드와 호환성을 위해 존재하므로 HashMap을 쓸것을 권한다.(라고 한다.) 멀티쓰레드에서는 HashTable을 사용한다고 한다.

🎯 중요 메소드

  1. 선언
HashMap<keyType, valueType> map = new HashMap<>();
  1. 값 입력
map.put(key, value)
map.putIfAbsent(key, value) //값이 없을 때만 넣는다.
  1. get
map.get(key) //null이면 null출력
map.getOrDefault(key, default) // null이면 default출력
  1. value변경
map.replace(key, value)
  1. contains
map.containsKey(key)
map.containsValue(value)
  1. 삭제
map.remove(key)

📚 참고자료

https://wikidocs.net/208
https://2ham-s.tistory.com/197

📚 문제

https://school.programmers.co.kr/learn/courses/30/lessons/1845

profile
안드로이드 개발자

0개의 댓글