HashSet의 LinkedHashSet의 소스 및 분석의 HashMap JDK1.8 소스 분석 (a)는 JDK1.8의 LinkedHashMap의 출처의 LinkedHashMap JDK1.8 소스 (b) 분석의 분석 (b)

I. 서론

  완성 된 목록을 두 가지 주요 클래스를 분석 한 후, 우리가 HashSet의 그리고 그것은 LinkedHashSet, 아래의 설정 인터페이스 클래스를 분석해야, 사실, 분석의 HashMap과의 LinkedHashMap의 완료 후,의는, HashSet의 그리고 그것은 LinkedHashSet, 그것은 매우 간단 될 것입니다 분석 아래의 분석을 시작하자 .

둘째, 데이터 구조

  2.1 HashSet의 데이터 구조

  이미 분석 된 오래된 규칙 제 데이터 구조, 바닥의 HashMap HashSet의 또는의 LinkedHashMap 기초하여 구현되기 때문에, 데이터 구조, 매우 귀찮은 HashSet에의 HashMap의 LinkedHashMap 또는 데이터 구조 없다. 여기에 직접 모습, (A)의 HashMap의 JDK1.8 소스 코드 분석 &&  의 LinkedHashMap의 JDK1.8 소스 코드 분석 (II) .

  2.2 LinkedHashSet의 데이터 구조

  LinkedHashSet의 기반의 LinkedHashMap 구현, 데이터 구조는 직접 여기를 참조하십시오. 의 LinkedHashMap의 JDK1.8 소스 코드 분석 (2 개) .

셋째, 소스 코드 분석

  3.1 HashSet의  

  1. 클래스 상속

공용 클래스 HashSet의 <E>는 
    AbstractSet <E>이 확장 
    세트 <E>, Cloneable을, java.io.Serializable을 구현

  재산의 2 클래스 

코드를 복사
HashSet의 클래스 공개 <E가> 
    가 AbstractSet <E>를 확장 
    구현 설정 <E>가 Cloneable의 java.io.Serializable을 
{ 
    // 버전의 일련 번호 
    정적의 serialVersionUID = 최종 긴 -5024744406713321676L; 
    // 키 맵 
    개인 과도 HashMap의 <E 개체 >지도; 
    값이 모든 키에 대응로서 사용 // 키 값은 해당 동등한 
    개인 본 정적 오브젝트 최종 = 새로운 새로운 객체 (); 
}
코드를 복사

  설명 : 때문에 HashSet에, 우리는 키가 위해, 그래서 HashMap에 저장되어 있다는 것을 알고 값을 포함 기본 특정 구현, 사용 또는의 LinkedHashMap의 HashMap (생성자가 사용하는 구조를 결정하기 위해 지정 될 수 있습니다) 때문에하지 않습니다 만 키를 포함 적응 저장되는 HashMap는 HashSet에 존재하는 클래스 필드 (모든 종류)의 모든 키는 동일한 값 (PRESENT)가 추가한다.

  3. 기타 분석

  추가 포함, 제거 또는 운영 기능은 HashMap의 소스 코드 분석 이전에 복잡하지, 주어졌다의 LinkedHashMap을 수행 기반으로합니다.

  3.2 LinkedHashSet의

  1. 클래스 상속  

공용 클래스 LinkedHashSet의 <E>는 
    HashSet의 <E>이 확장 
    세트 <E>, Cloneable을, java.io.Serializable을 구현

  설명 LinkedHashSet의도 복잡하지 인터페이스의 수를 구현, HashSet의 상속.

  2. 기타 사항

  LinkedHashSet의 좋은 기능 LinkedHashSet의 요구를 달성하기 위해, 그래서 구현이의 LinkedHashMap이다하자, 부모 클래스의 생성자 HashSet의를 호출합니다.

IV 요약

  각각 HashSet에, 그것은 LinkedHashSet과의 HashMap,의 LinkedHashMap. HashMap의를 분석 한 후,의 LinkedHashMap 소스, HashSet의는 LinkedHashSet의도는 매우 쉽게 이해합니다. ~ 공원 시계의 친구 주셔서 감사합니다

추천

출처www.cnblogs.com/wzq-xf/p/11784611.html