JDK原始碼學習之集合

2021-10-02 20:08:42 字數 1395 閱讀 9406

collection介面所有集合類的最頂層介面。從網上找到了乙個uml類圖感覺不錯。接下來會仔細閱讀arraylist,linkedlist,hashset,treeset,甚至更多。。。先分析這幾個的原因,主要是因為比較常用。

1. int size();//返回集合中的元素總數

2.boolean isempty();//判斷集合是否為空,為空返回true

3.boolean contains(object o);//判斷集合中是否包含物件o

4.iteratoriterator();//返回該集合的迭代器

5.object toarray();//將集合轉換成object型別陣列

6.t toarray(t a);//按照泛型t的型別將集合轉換成為t型別的陣列

7.boolean add(e e);//在集合中增加指定元素

8.boolean remove(object o);//從集合中移除指定的物件o

9.boolean containsall(collection> c);//判斷該集合內是否包含了指定集合c中的所有元素

10.boolean addall(collection extends e> c);//將指定集合c中的所有元素增加到該集合中

11.boolean removeall(collection> c);//從該集合中移除指定集合c的所有元素

12.boolean retainall(collection> c);//只保留指定集合c中包含的元素

13.void clear();//移除集合中所有的元素

14.boolean equals(object o);//將該集合與指定物件o進行比較

15.int hashcode();//返回集合的hashcode值

除以上方法以外 jdk1.8還新增了一些預設(default關鍵字,可以讓介面的方法

擁有方法體,而實現類不需要強制實現。)方法,我感覺這樣做的目的遵循了設計模式

中的開閉封閉原則(對擴充套件開放,對修改封閉)試想一下如果collection的所有子類都要

使用到同乙個stream該方法那我是不是要修改collection的所有子類給所有的子類都新增

上這個方法?顯然這樣做是非常麻煩的,所以出現了這樣的一種特性。如下所示:

以下方法我不是很常用就不一一分析了

16.default boolean removeif(predicate super e> filter);

17.spliteratorspliterator();

18.streamstream();

19.streamparallelstream();

學習JDK1 8集合原始碼之 Stack

stack是集合中對資料結構棧的一種實現,棧的原則是先進先後出,與佇列相反 先進先出 stack是繼承自vector的,意味著它也是由陣列實現的執行緒安全的,不考慮執行緒安全的情況下完全可以用linkedlist當做棧來使用。stack的實現很簡單,核心引數和方法都繼承自vector,因為它可以呼叫...

原始碼解析 JDK原始碼之LinkedHashMap

linkedhashmap原始碼,基於 jdk1.6.43 他繼承了hashmap,並且實現了插入和訪問的有序功能 public class linkedhashmapextends hashmapimplements map 其也有乙個entry內部類,繼承了 hashmap 的entry 內部類...

JDK原始碼之Map

1.hashmap hashmap初始化的方式有四種。建立乙個entry陣列,預設初始長度為16,當大於0.75的時候,擴充套件為當前的2倍。有4中初始化map的方式。mapmap new hashmap mapmap2 new hashmap 17 mapmap3 new hashmap 15,2...