JAVA 집합 류 실현 원리 약술 - PART 1 지도

1678 단어 자바 언어
1 HashMap
Hashmap 의 바 텀 데이터 구 조 는 산 목록 이 고 바 텀 실현 구 조 는 배열 과 링크 입 니 다. key - val 이 삽입 할 때 key 에 따라 hashcode 를 계산 한 다음 에 배열 의 특정한 위치 에 투사 합 니 다.만약 배열 의 위치 가 점용 되 고 충돌 이 발생 했다 면.링크 주 소 를 통 해 이 충돌 을 해결 합 니 다.
삽입 프로 세 스
put(key,val), key  HASH  hashcode,  hashcode         ,     key-val  。

       ,            ,           ,       (bucket)  key-val    。

수치 추출 과정
getkey), key  HASH  hashcode,  hashcode          ,    
       entry (       ),       。

          entry ,        ,          ,  entry  
key      key,  entry   。

Hash Table 과 의 차이
Hashtable 의 모든 방법 에 synchronized 를 추가 하면 스 레 드 가 안전 합 니 다. HashMap 은 스 레 드 가 아 닌 Hashtable 은 Null 의 key 를 설정 할 수 없습니다. HashMap 은 Null 로 설정 할 수 있 는 key 단일 스 레 드 일 때 Hashtable 속도 가 느 립 니 다.
HashMap 을 통 해 라인 안전 목적 달성
우 리 는 HashMap 을 맵 m = Collections. synchronizeMap (hashMap) 과 동기 화 할 수 있 습 니 다.이렇게 하면 서로 배척 하 는 대상 자 물 쇠 를 통 해 스 레 드 동기 화의 목적 을 달성 하 는 것 이다. 그러나 이러한 실현 은 병행 장면 에서 효율 이 너무 낮 았 다. 나중에 concurrent 가방 에 있 는 Concurrent HashMap 은 데이터 구조 에서 높 은 병행 에 대한 지 지 를 진정 으로 실현 했다.
2 TreeMap
  • 라인 이 안전 하지 않 음
  • 내부 의 붉 은 검 은 나무 실현
  • 3 LinkedHashMap
  • 내부 의 entry < k, v > 는 현재 요소 의 도입 을 저장 하 는 것 외 에 이전, 다음 요소 의 인용 도 저장 합 니 다
  • 는 HashMap 에서 계승
  • 삽입 순서 가 질서정연 하 다
  • LRU 알고리즘 실현 가능
  • 라인 이 안전 하지 않 음
  • 좋은 웹페이지 즐겨찾기