[JDK] JDKのソースコード解析 - コレクション

Javaコレクションフレームワーク(Javaのコレクションフレームワーク、JCF)は、通常、多くの一般的な開発クラス、例えばリスト、セット、ArrayListに、HashMapの、HashSetのようなが含まれているので、ここで開始するために開始する予定。

 

Collectionインタフェースは、最も一般的に使用される一覧とSetインタフェースはそれを継承し、コレクション階層のルートインタフェースです。下の彼らの継承構造(共通部分):

 

Collectionインタフェースのメソッドは以下の通りであります:

 

多くの方法がここにイタリア、簡単な分析を知っている名前を見ることができます:

1.サイズ():コレクションに含まれる要素の数。

2.のisEmpty()コレクションが空であるかどうか。

3.(オブジェクト)が含ま:オブジェクトがコレクションに含まれている場合、

4.イテレータ():(シーケンシャル)セットを横断するために、コレクションのイテレータを返します。

5.1オブジェクト[]のtoArray():アレイにセット「コピー」オブジェクトの要素。

5.2 T []のtoArray(T [] A):この方法は、アレイ(アレイのセットを切り替えるための2つの方法)の種類を指定してもよいことを除いて5.1効果を有します、;

6.追加(E):添加元素。

7.削除(オブジェクト):除去素子と

8.の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