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