자바 에서 HashMap, LinkedHashMap, TreeMap 의 차이
8586 단어 LinkedHashMap
HashMap, LinkedHashMap, TreeMap 은 모두 지도 에 속한다.
Map 은 키 (key) 값 (value) 을 저장 하 는 데 사용 되 며, 키 에 따라 값 을 얻 기 때문에 키 는 중복 되 지 않 지만, 값 이 중복 되 는 것 을 허용 합 니 다.
HashMap 은 키 의 HashCode 값 에 따라 데 이 터 를 저장 하고 키 에 따라 값 을 직접 얻 을 수 있 으 며 빠 른 접근 속 도 를 가진다.HashMap 은 최대 한 개의 기록 키 만 Null 로 허용 합 니 다.여러 개의 기록 값 을 Null 로 허용 하기;HashMap 은 스 레 드 의 동기 화 를 지원 하지 않 습 니 다. 즉, 언제든지 여러 스 레 드 가 동시에 HashMap 을 쓸 수 있 습 니 다.데이터 가 일치 하지 않 을 수 있 습 니 다.동기 화가 필요 하 다 면 Collections 의 synchronizedMap 방법 으로 HashMap 을 동기 화 할 수 있 습 니 다.
링크 드 하 쉬 맵 링크 드 하 쉬 맵 도 하 쉬 맵 이지 만 내부 에 양 방향 링크 가 유지 되 어 순 서 를 유지 할 수 있 습 니 다.
TreeMap 은 순 서 를 유지 할 수 있 을 뿐만 아니 라 정렬 에 도 사용 할 수 있다.
HashMap 예:
public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("a3", "aa"); map.put("a2", "bb"); map.put("b1", "cc"); for (Iterator iterator = map.values().iterator(); iterator.hasNext();) { String name = (String) iterator.next(); System.out.println(name); } }
LinkedHashMap 예:
public static void main(String[] args) { Map<String, String> map = new LinkedHashMap<String, String>(); map.put("a3", "aa"); map.put("a2", "bb"); map.put("b1", "cc"); for (Iterator iterator = map.values().iterator(); iterator.hasNext();) { String name = (String) iterator.next(); System.out.println(name); } }
TreeMap 예:
public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(new Comparator<Object>(){ Collator collator = Collator.getInstance(); public int compare(Object o1, Object o2) { CollationKey key1 = collator.getCollationKey(o1.toString()); CollationKey key2 = collator.getCollationKey(o2.toString()); return key1.compareTo(key2); //return collator.compare(o1, o2); }}); map.put("a3", "aa"); map.put("a2", "bb"); map.put("b1", "cc"); for (Iterator iterator = map.values().iterator(); iterator.hasNext();) { String name = (String) iterator.next(); System.out.println(name); } }
이 세 가지 예 를 실행 하여 그것들 간 의 차 이 를 체득 하 다.