> Java > java지도 시간 > Java의 HashMap, LinkedHashMap 및 TreeMap: 주요 차이점은 무엇입니까?

Java의 HashMap, LinkedHashMap 및 TreeMap: 주요 차이점은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-18 07:57:10
원래의
205명이 탐색했습니다.

HashMap, LinkedHashMap, and TreeMap in Java: What are the Key Differences?

HashMap, LinkedHashMap 및 TreeMap 간의 차이점 탐색

Java에서 이 세 가지 데이터 구조는 데이터 구성 및 액세스에 대한 다양한 접근 방식을 제공합니다. 각각 고유한

HashMap:

HashMap은 효율성을 최우선으로 하여 데이터를 빠르게 검색하고 저장할 수 있습니다. 특정 순서를 유지하지 않고 대신 해시 테이블을 구현하여 대부분의 작업에 일정한 시간 성능을 제공하는 데 중점을 둡니다.

LinkedHashMap:

LinkedHashMap은 다음의 이점을 결합합니다. HashMap 및 LinkedList는 요소의 삽입 순서를 유지합니다. 이중 연결 목록 구조를 사용하여 데이터에 빠르고 순서대로 액세스할 수 있습니다.

TreeMap:

TreeMap은 정렬된 인터페이스를 제공하여 키를 오름차순으로 유지합니다. 주문하다. 이는 요소 찾기, 삽입, 삭제와 같은 작업에 대수적 시간 복잡성을 허용하는 레드-블랙 트리 데이터 구조를 사용합니다.

Java의 해시 테이블:

더 이상 일반적으로 사용되지 않는 해시 테이블은 Java의 HashMap보다 앞서며 해시 기반 구현이라는 많은 유사점을 공유했습니다. 동기화되어 스레드 안전성을 보장하지만 추가 오버헤드가 발생합니다.

예:

세 가지 항목의 출력 차이를 보여주는 다음 스니펫을 고려하세요. 구조:

Map<String, String> m1 = new HashMap<>();
SortedMap<String, String> sm = new TreeMap<>();
LinkedHashMap<String, String> lm = new LinkedHashMap<>();

// Insert elements into all three maps
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");

sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");

lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");

// Output the keysets and values from each map
print(m1.keySet());
print(m1.values());

print(sm.keySet());
print(sm.values());

print(lm.keySet());
print(lm.values());
로그인 후 복사

출력:

HashMap(순서 없음):

[map, schildt, mathew, schildt]
[HashMap, java2, Hyden, java2s]
로그인 후 복사

TreeMap (정렬):

[map, mathew, schildt, schildt]
[TreeMap, Hyden, java2, java2s]
로그인 후 복사

LinkedHashMap(삽입 순서):

[map, schildt, mathew, schildt]
[LinkedHashMap, java2, Hyden, java2s]
로그인 후 복사

위 내용은 Java의 HashMap, LinkedHashMap 및 TreeMap: 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿