링크 드 해시 맵 과 해시 맵 의 비교 사용

4082 단어 LinkedHashMap

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class TestLinkedHashMap {
 
  public static void main(String args[])
  {
   System.out.println("*************************LinkedHashMap*************");
   Map<Integer,String> map = new LinkedHashMap<Integer,String>();
   map.put(6, "apple");
   map.put(3, "banana");
   map.put(2,"pear");
   
   for (Iterator it =  map.keySet().iterator();it.hasNext();)
   {
    Object key = it.next();
    System.out.println( key+"="+ map.get(key));
   }
   
   System.out.println("*************************HashMap*************");
   Map<Integer,String> map1 = new  HashMap<Integer,String>();
   map1.put(6, "apple");
   map1.put(3, "banana");
   map1.put(2,"pear");
   
   for (Iterator it =  map1.keySet().iterator();it.hasNext();)
   {
    Object key = it.next();
    System.out.println( key+"="+ map1.get(key));
   }
  }
}

실행 결 과 는 다음 과 같 습 니 다.
*************************LinkedHashMap*************
6=apple
3=banana
2=pear
*************************HashMap**************************
2=pear
6=apple
3=banana
분석:링크 드 Hashmap 의 특징 은 넣 은 대상 의 위치 가 변 하지 않 고 HashMap 에 변화 가 생 긴 다 는 것 이다.
더욱 보급:
자바 는 데이터 구조의 맵 에 인터페이스 자바 util.Map 을 정의 합 니 다.그것 은 네 가지 실현 유형 이 있 는데 그것 이 바로 HashMap Hashtable Linked HashMap 과 TreeMap 이다.
맵 은 주로 건 치 쌍 을 저장 하 는 데 사용 되 며 키 에 따라 값 을 얻 기 때문에 키 중복 은 허용 되 지 않 지만 중복 은 허용 되 지 않 습 니 다.
Hashmap 는 키 의 HashCode 값 에 따라 데 이 터 를 저장 하고 키 에 따라 직접 값 을 얻 을 수 있 으 며 빠 른 접근 속도 가 있 으 며 시간 이 지나 면 데 이 터 를 얻 는 순 서 는 완전히 무 작위 입 니 다.HashMap 은 최대 한 개의 기록 키 만 Null 로 허용 합 니 다.여러 개의 기록 값 을 Null 로 허용 하기;HashMap 은 스 레 드 의 동기 화 를 지원 하지 않 습 니 다.즉,언제든지 여러 스 레 드 가 동시에 HashMap 을 쓸 수 있 습 니 다.데이터 가 일치 하지 않 을 수 있 습 니 다.동기 화가 필요 하 다 면 Collections 의 synchronizedMap 방법 으로 HashMap 을 동기 화 할 수 있 거나 ConcurrentHashMap 을 사용 할 수 있 습 니 다.
Hashtable 은 HashMap 과 유사 합 니 다.Dictionary 류 에서 계승 합 니 다.다른 것 은 기 록 된 키 나 값 이 비어 있 는 것 을 허용 하지 않 습 니 다.이것 은 스 레 드 의 동기 화 를 지원 합 니 다.즉,어느 순간 에 하나의 스 레 드 만 Hashtable 을 쓸 수 있 기 때문에 Hashtable 은 기록 할 때 느 립 니 다.
링크 드 하 쉬 맵 은 하 쉬 맵 의 하위 클래스 로 기록 의 삽입 순 서 를 저장 합 니 다.Iterator 로 링크 드 하 쉬 맵 을 옮 겨 다 닐 때 먼저 얻 은 기록 은 먼저 삽 입 된 것 이 분명 합 니 다.구조 할 때 파 라 메 터 를 사용 하여 응용 횟수 에 따라 정렬 할 수도 있 습 니 다.옮 겨 다 닐 때 HashMap 보다 느 릴 수 있 지만 예외 적 으로 HashMap 의 용량 이 크 고 실제 데이터 가 적 을 때 옮 겨 다 니 는 속도 가 LinkedHashMap 보다 느 릴 수 있 습 니 다.왜냐하면 LinkedHashMap 의 옮 겨 다 니 는 속 도 는 실제 데이터 와 만 관련 이 있 고 용량 과 무관 하 며 HashMap 의 옮 겨 다 니 는 속 도 는 그의 용량 과 관계 가 있 기 때 문 입 니 다.
TreeMap 은 SortMap 인 터 페 이 스 를 실현 합 니 다.저 장 된 기록 을 키 에 따라 정렬 할 수 있 습 니 다.기본 값 은 버튼 값 의 오름차 순 으로 정렬 할 수도 있 고 정렬 된 비교 기 를 지정 할 수도 있 습 니 다.Iterator 로 TreeMap 을 옮 겨 다 닐 때 얻 은 기록 은 정렬 된 것 입 니 다.
일반적인 상황 에서 우리 가 가장 많이 사용 하 는 것 은 HashMap 이다.Map 에 요 소 를 삽입 하고 삭제 하 며 포 지 셔 닝 하 는 것 이 가장 좋 은 선택 이다.하지만 자 연 스 러 운 순서 나 사용자 정의 순서 로 키 를 옮 겨 다 니 려 면 트 리 맵 이 좋 습 니 다.출력 순서 가 입력 과 같 아야 한다 면 링크 드 HashMap 으로 이 루어 질 수 있 고 읽 기 순서 로 배열 할 수 있 습 니 다.
HashMap 은 키 의 hashCode 값 에 따라 데 이 터 를 저장 하고 키 에 따라 값 을 직접 얻 을 수 있 으 며 빠 른 접근 속 도 를 가 집 니 다.HashMap 은 최대 한 개의 기록 키 만 NULL 로 허용 하고 여러 개의 기록 값 은 NULL 로 허용 합 니 다.
HashMap 은 스 레 드 동기 화 를 지원 하지 않 습 니 다.즉,모든 스 레 드 가 HashMap 을 동시에 쓸 수 있 고 데이터 의 불일치 성 을 초래 할 수 있 습 니 다.동기 화가 필요 하 다 면 Collections 의 synchronizedMap 방법 으로 HashMap 을 동기 화 할 수 있 습 니 다.
Hashtable 은 HashMap 과 유사 합 니 다.다른 것 은 기 록 된 키 나 값 이 비어 있 는 것 을 허용 하지 않 습 니 다.이것 은 스 레 드 의 동기 화 를 지원 합 니 다.즉,어느 순간 에 하나의 스 레 드 만 Hashtable 을 쓸 수 있 기 때문에 Hashtable 은 기록 할 때 느 립 니 다.
링크 드 하 쉬 맵 은 기록 의 삽입 순 서 를 저장 합 니 다.Iterator 로 링크 드 하 쉬 맵 을 옮 겨 다 닐 때 먼저 받 은 기록 은 먼저 삽 입 된 것 이 분명 합 니 다.
옮 겨 다 닐 때 HashMap 보다 느 립 니 다.TreeMap 은 저 장 된 기록 을 키 에 따라 정렬 할 수 있 습 니 다.기본 값 은 오름차 순 으로 정렬 하고 정렬 된 비교 기 를 지정 할 수 있 습 니 다.Iterator 로 TreeMap 을 옮 겨 다 닐 때 얻 은 기록 은 정렬 되 어 있 습 니 다.

좋은 웹페이지 즐겨찾기