JDK原始碼解讀 Collection(介面)

2021-09-27 04:30:30 字數 1367 閱讀 5814

collection介面是對儲存資料的容器的抽象,裡面定義的方法其實就是容器應該具有的功能。

boolean add(e e);

boolean addall(collection<? extends e> c);

boolean remove(object o);

boolean removeall(collection<?> c);

void clear();

boolean contains(object o);

boolean containsall(collection<?> c);

//返回容器中元素數量

int size();

//判斷容器是否為空

boolean isempty();

//求兩個元素的交集

boolean retainall(collection<?> c);

//迭代容器中元素

iteratoriterator();

//轉換為陣列

object toarray();

//轉換為指定型別的陣列

t toarray(t a);

上面就是collection所有的方法了,有點意思的就是兩個toarray方法了。

listlist = new arraylist();

list.add("betty");

list.add("sweeney");

list.add("鐘");

list.add("左");

//無引數的toarray方法,返回的是乙個object陣列

object o = list.toarray();

system.out.println(o.length);//返回4

//有參的toarray方法,返回的是跟引數型別一致的陣列

string s = new string[3];

string str = list.toarray(s);

system.out.println(str.length);//返回4

string s1 = new string[10];

string str2 = list.toarray(s1);

system.out.println(str2.length);//返回10

注意,有引數的toarray方法,陣列引數的length會影響返回陣列的length:

陣列引數的length < 容器的size,返回的陣列length = 容器的size;

陣列引數的length > 容器的size,返回的陣列length = 陣列引數的length。

JDK原始碼解讀 Iterator(介面)

1.hasnext 判斷是否還有元素 boolean hasnext 2.next 返回下乙個元素 e next 3.remove default void remove 一般集合都提供了remove方法,為什麼迭代器介面還要提供乙個介面呢?其實如果在iterator迭代操作的時候,collecti...

JDK原始碼解讀 List(介面)

list介面繼承了collection介面,是列表這一型別的基礎介面 int size boolean isempty boolean contains object o iteratoriterator object toarray t toarray t a boolean add e e bo...

JDK1 8原始碼 HashMap解讀

hashmap是我們最常用的集合型別之一了。也由於其高效 使用方便,我們有必要對其內部進行梳理一番。jdk1.8原始碼中,關於map的類圖關係如下 從map的類圖關係中,我們可以看出還是蠻豐富的。需要用到順序的,可以使用treemap,需要執行緒安全的可以使用hashtable和concurrent...