Map은 Collection Framework에 Map으로 나누어진 객체로 Key, Value형식을 가지고 있습니다.
1. Key는 중복일 수 없다.
2. Key와 Value중 하나만 존재하지 않는다.
3. Value는 중복이 가능하다.
이렇게 3가지가 Map의 특징이라고 할 수 있습니다.
Map Interface 구현체로 HashTable을 사용한 클래스로 일반적으로 많이 사용하는 Map자료구조입니다.
중복을 허용하지 않고 순서를 보장하지 않습니다.
키와 값으로 null이 허용됩니다.
HashMap은 아래와 같이 생성 가능합니다.
Map<String, Integer> map = new HashMap<String, Integer>();
HashMap과 동일한 특징을 가지고 있지만 차이점은 HashTable은 Thread-Safe
하여 동기화를 지원합니다.
HashMap보단 처리속도가 느립니다.
HashMap과 다르게 key와 value값으로 null을 허용하지 않습니다.
HashTable은 아래와 같이 생성 가능합니다.
Map<String, Integer> hashTable = new HashTable<String, Integer>();
HashMap과 동일한 특징을 가지고 있고 HashMap에서는 순서를 보장하지않지만 LinkedHashMap에서는 순서를 보장합니다.
LinkedHashMap은 아래와 같이 생성 가능합니다.
Map<String, Integer> map = new LinkedHashMap<String, Integer>();
이진탐색트리 기반으로 key와 value를 저장합니다.
key값을 인자로 준 Comparator기반으로 정렬되고 default는 오름차순입니다.
빠른 검색이 가능합니다.
저장 시 정렬을 하기 때문에 처리속도가 느립니다.
TreeMap은 아래와 같이 생성 가능합니다.
Map<String, Integer> map = new TreeMap<String, Integer>(); // 기본 오름차순
Map<String, Integer> map = new TreeMap<String, Integer>((a,b) -> b.compareTo(a)); // 내림차순