Java Map

Yono·2024년 6월 28일
post-thumbnail

자바 프로그래밍에서 Map 인터페이스는 키와 값을 쌍으로 저장하는 자료구조를 제공합니다. 이 인터페이스는 고유한 키를 기반으로 데이터를 효율적으로 관리할 수 있도록 도와줍니다. HashMap, LinkedHashMap, TreeMap이 대표적인 구현체입니다

HashMap

HashMap은 해시 테이블을 기반으로 하여, 빠른 검색과 삽입, 삭제를 지원하는 자료구조입니다. 키와 값의 순서를 보장하지 않습니다.

특징:

  • 검색/삽입/삭제 속도: 평균적으로 매우 빠릅니다. (O(1))
  • 순서 보장 없음: 요소들이 삽입된 순서가 유지되지 않습니다.
  • null 허용: 하나의 null 키와 여러 개의 null 값을 허용합니다.
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Java", 1);
hashMap.put("Python", 2);
hashMap.put("C++", 3);
System.out.println(hashMap.get("Java")); // 출력: 1

LinkedHashMap

LinkedHashMap은 해시 테이블과 이중 연결 리스트를 기반으로 하여, 삽입 순서를 유지하는 자료구조입니다.

특징:

  • 검색/삽입/삭제 속도: 해시 테이블을 사용하므로 빠릅니다. (O(1))
  • 순서 유지: 요소들이 삽입된 순서를 유지합니다.
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("Java", 1);
linkedHashMap.put("Python", 2);
linkedHashMap.put("C++", 3);
System.out.println(linkedHashMap.get("Java")); // 출력: 1

TreeMap

TreeMap은 이진 검색 트리를 기반으로 하여 키의 자연 순서 또는 제공된 비교자에 따라 정렬된 순서를 유지하는 자료구조입니다.

특징:

  • 정렬된 순서 유지: 키의 자연 순서 또는 비교자에 따른 순서를 유지합니다.
  • 검색/삽입/삭제 속도: O(log n)의 시간 복잡도를 가집니다.
  • null 허용 불가: TreeMap은 null 키를 허용하지 않습니다.
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Java", 1);
treeMap.put("Python", 2);
treeMap.put("C++", 3);
System.out.println(treeMap.get("Java")); // 출력: 1
특성HashMapLinkedHashMapTreeMap
검색 속도O(1)O(1)O(log n)
삽입 속도O(1)O(1)O(log n)
삭제 속도O(1)O(1)O(log n)
순서 유지XOO
정렬XXO
null 키 허용OOX

Map 인터페이스는 자바에서 키-값 쌍의 데이터를 효율적으로 관리할 수 있도록 도와주는 강력한 도구입니다. HashMap은 가장 일반적으로 사용되며, 빠른 검색과 삽입이 필요할 때 유용합니다. LinkedHashMap은 데이터의 삽입 순서를 유지하고자 할 때 적합합니다. TreeMap은 키의 자연 순서나 사용자 정의 순서에 따라 정렬된 데이터를 필요로 할 때 유용합니다.

profile
Java,Spring,JavaScript

0개의 댓글