[JDK] JDK 소스 코드 분석 -collection

자바 컬렉션 프레임 워크 (자바 컬렉션 프레임 워크, JCF는) 일반적으로, 그래서 여기에 목록, 세트, ​​ArrayList를, HashMap에가, 등을 HashSet의 예를 들면, 많은 일반적인 개발 클래스를 포함 시작을 시작 할 예정이다.

 

컬렉션 인터페이스 컬렉션 계층 구조의 루트 인터페이스, 가장 일반적으로 사용되는 목록과 설정 인터페이스는 그것에서 상속합니다. 아래 그들의 상속 구조 (공통 부분) :

 

Collection 인터페이스 방법은 아래에 설명되어 있습니다 :

 

많은 방법이 여기 이탈리아어, 간단한 분석을 알고 이름을 볼 수 있습니다 :

크기 1 () : 콜렉션에 포함 된 소자의 수;

2. 그러나 IsEmpty () : 컬렉션이 비어 있는지;

3. (Object)를 포함 객체가 컬렉션에 포함 된 경우;

4. 반복자 (가) : (순차) 가로 지르는 세트, 컬렉션에 대한 반복자를 반환

5.1 오브젝트 [] toArray () 배열 세트 "복사"객체의 요소;

5.2 T [] toArray (T [] a) : 상기 방법은 어레이의 형태 (배열의 세트 사이에서 전환하는 두 가지 방법)을 지정할 수 제외한 효과와 5.1;

6. 추가 (E) 첨가제 소자;

삭제 제 (개체) 분리 소자와;

제 containsAll 나 (컬렉션 <?>) 컬렉션 다른 세트를 포함하는지 여부를 결정하는 단계;

9. 및 addAll은 (컬렉션 <? E를 확장>) 다른 세트의 모든 요소 컬렉션에 추가된다;

10에서 removeAll (컬렉션 <?>) 집합에서 모든 요소들의 지정된 세트를 제거;

11. removeIf (<E 슈퍼?> 술어) 기능 동작 술어 JDK 1.8가 도입된다, 즉, 파라미터 전달 방법을 상기 요소의 집합에서 지정된 조건을 제거하는 단계;

12. 나 retainAll (<?> 컬렉션) 세트, 즉,이 특정 세트에 포함 된 모든 요소를 ​​제거하지 않고있는 고정 요소를 지정한다;

13. clear(): 清空集合;

14. equals(Object): 比较该集合与指定的对象是否相等;

15. hashCode(): 返回该集合的哈希值,注意重写 equals 方法时必须要重写该方法,以满足 Object.hashCode 方法的规定。

16. spliterator(): 可分割迭代器,用于并行遍历集合中的元素(iterator() 方法是顺序遍历);

17. stream() & parallelStream(): JDK 1.8 引入的流(Stream)式数据处理,分别表示串行流和并行流,该部分以后单独分析。

 

此外,还有一个继承自 Iterable 接口的 forEach(Consumer<? super T>) 方法,该方法也是 JDK 1.8 引入的,提供遍历集合元素的函数式操作。

 

PS: JDK 版本如下

 

阅读源码时,个人以为应该先读接口类,而非具体的实现类。原因有二:

 

1. 接口类本身就有协议或标准的性质,至于它的多个实现类,都是对该标准的详细实现。因此,如果熟悉了「标准」,再去研究其实现类会更容易理解。

 

2. 从代码量看,接口类代码较少。实现类的代码一般较多,如果初读源码就钻到实现类,可能容易被搞蒙。

 

Stay hungry, stay foolish.

PS: 本文首发自微信公众号。

추천

출처www.cnblogs.com/jaxer/p/11105412.html