-
Map
- 인터페이스
- 키와 값을 하나의 쌍으로 저장하는 방식(key-value)
- 키는 중복을 허용하지 않지만, 값은 중복을 허용
- 요소의 저장 순서를 유지X
- 주요 클래스
- HashMap<K, V>
- LinkedHashMap<K, V>
- TreeMap<K, V>
HashMap
HashMap<String, Object> hashMap = new HashMap<String, Object>();
- Hashtable의 개선버전
- 배열 + 링크드 리스트의 구조
HashMap<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put("apple", "apple"); hashMap.put("tomato", "tomato"); hashMap.put("banana", "banana"); System.out.println(hashMap.toString());
{banana=banana, apple=apple, tomato=tomato}
순서대로 저장 X
※ 참고
Map<String, Object> map = new Map<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
Map 선언 시 첫번째 코드가 아닌 두번째 코드를 사용한다. 이렇게 사용하는 이유는 Map이 인터페이스이기 때문이다.
따라서 Body를 직접 작성할 수 없다. HashMap은 Map 인터페이스를 구현했다.
Map<String, Object> map = new HashMap<String, Object>(); HashMap<String, Object> map = new HashMap<String, Object>();
Map을 구현한 객체는 여러 가지가 있다. 그리고 이 여러가지 Map들은 Map interface를 구현하는 구조로 되어있다.
그렇기 때문에 첫번째 코드처럼 Map 인터페이스로 HashMap을 사용하게 되면 나중에 HashMap이 아닌 다른 종류의 Map을 사용하게 되더라고 수정이 용이하다.
LinkedHashMap
LinkedHashMap<String, Object> linkedHashMap = new LinkedHashMap<String, Object>();
- HashMap을 확장하는 클래스
- 요소의 저장 순서를 유지O
LinkedHashMap<String, Object> linkedHashMap = new LinkedHashMap<String, Object>(); linkedHashMap.put("apple", "apple"); linkedHashMap.put("tomato", "tomato"); linkedHashMap.put("banana", "banana"); System.out.println(linkedHashMap.toString());
{apple=apple, tomato=tomato, banana=banana}
순서대로 저장 O
TreeMap
- 이진트리를 기반
- 정렬된 상태에서 데이터를 조회해야 하는 범위 검색에 성능이 좋음
- Red-Black 트리로 구현
TreeMap<String, Object> treeMap = new TreeMap<String, Object>(); treeMap.put("apple", "apple"); treeMap.put("tomato", "tomato"); treeMap.put("banana", "banana"); System.out.println(treeMap.toString());
{apple=apple, banana=banana, tomato=tomato}
출처 :
https://myeongdev.tistory.com/23
https://web-inf.tistory.com/44
'Java' 카테고리의 다른 글
List (0) 2023.06.27 날짜 클래스 (자바 8 이후) (0) 2023.06.27 slf4j log4j logback log4j2 (0) 2023.01.27 래퍼(Wrapper) 클래스 (0) 2023.01.01 Integer.parseInt와 Integer.valueOf (0) 2022.12.31