목차
개념
Map이란?
Key와 Value의 한쌍으로 이우러진 데이터의 집합입니다.
Key에 대한 중복은 없으면 순서를 보장하지 않습니다.
뛰어난 검색 속도를 가집니다.
인덱스가 따로 존재하지 않기 때문에 iterator를 사용합니다.
종류와 특징
Map은 인터페이스이므로 구현체를 선언해 사용합니다.
구현체의 종류는 4가지가 있습니다.
HashMap, HashTable, LinkedHashMap, TreeMap
HashMap
HashMap은 내부에 Key 와 Value 를 저장하는 자료 구조를 가지고 있습니다.
HashMap은 해시 함수를 통해 키와 값이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 들어 있는 위치 또한 관계 없습니다.
특징
- Key에 대한 중복이 없으며 순서를 보장하지 않습니다.
- Key와 Value 값으로 Null을 허용합니다.
- 동기화가 보장되지 않습니다.
- 뛰어난 검색 성능을 가집니다.
HashTable
- Key와 Value 값으로 Null을 허용하지 않습니다.
- 동기화가 보장되어 병렬 프로그래밍이 가능하고 HashMap 보다 처리속도가 느립니다.
LinkedHashMap
- 입력된 순서를 보장합니다.
TreeMap
- 이진 탐색 트리를 기반으로 키와 값을 저장합니다.
- Key 값을 기준으로 오름차순으로 정렬되고 빠른 검색이 가능합니다.
- 저장 시 정렬을 수행하기 때문에 시간이 다소 오래 걸립니다.
Map의 사용
선언
// Map<K, V> map = new HashMap<>();
Map<String, Integer> map = new HashMap<>();
추가
map.put("apple", 1);
추가 (기존에 없으면 1로 추가, 기존에 있다면 +1로 추가)
map.put("apple", map.getOrDefault("apple", 0) + 1);
Map을 입력했을 때 전부 추가
Map<String, Integer> temp = new HashMap<>();
temp.put("peach", 1);
map.putAll(temp);
Key 값 조회하기
map.get("apple");
제거하기
map.remove("apple");
// 이 때 Key의 Value 값이 반환됩니다.
초기화하기
map.clear();
비어있는지 확인하기
map.isEmpty();
// 비어있다면 true를 비어있지 않다면 false를 반환
Key와 Value의 값들을 list로 받기
// map의 Key 값들을 리스트로 받기
map.keySet();
// map의 Value 값들을 리스트로 받기
map.values();
Key 값이 포함되어 있는지 확인하기
map.containsKey("apple");
교체하기
map.replace("apple", 10);
탐색하기
for(String key : map.keySet()) {
map.get(key);
}
참조 사이트
https://ilivetoday.tistory.com/2
https://velog.io/@mon99745/Java-Map-HashMap-%EC%A0%95%EB%A6%AC