1.關於hashCode和equals方法處理原則
1)只要重寫equals,就必須重寫hashCode
2)set存儲的對象必須重寫hashCode和equals方法
3)自定義對象作爲Map的鍵,必須重寫hashCode和equals方法
4)String重寫了hashCode和equals方法。所以直接使用String對象作爲key使用
2.ArrayList的subList結果不可強轉出ArrayList,例如ArrayList<String> rl=(ArrayList)list.subList(0, 1);
否則拋異常java.lang.ClassCastException: java.util.ArrayList$SubList cannot be cast to java.util.ArrayList
返回的是ArrayList的內部類SubList它是ArrayList的一個視圖,對SubList子列表的所有操作最終會反應到原列表上。
3.高度注意對原集合元素個數修改,會導致子列表的遍歷,增,刪的拋出的異常。
4.集合轉數組的方法必須使用集合的toArray(T[] array),
如果使用toArray()返回Object[]類,強轉時出現錯誤例如:String[] array = new Stirng[list.size()];
array=list.toArray(array)
5.工具類
String[] sarray = new String[]{"YOSD","SDFDS"}; List alist =Arrays.asList(sarray); 不能使用修改集合方法
1)alist.add("dsf");出現異常Exception in thread "main" java.lang.UnsupportedOperationException
此方法體現適配器模式,是轉化接口,後臺數據還是數組。
2) sarray[0]="chia",list,get(0)所之改變
6 泛型通配符<? extends T>來接收返回的數據,此泛型集合不能使用add方法 使用頻繁往外讀取內容。
泛型通配符<? super T> 不能使用get方法,接口調用賦值時易出錯。 適合經常往裏插入
7.不要在foreach循環裏進行元素remove/add操作,請使用Iterator方式
8.Compatator滿足三個條件
1)x,y比較結果和y,x比較結果相反
2)x>y , y>z 則 x>z
3) x=y
JDK7+ Array/Collections的sort纔可以使用。
9.集合初始化時,指定集合初始值大小
無法確認時 爲16 否則是 (存儲元素個數/負載因子)+1,可以提高性能
10.推薦使用entrySet遍歷Map類集合KV,效率高,遍歷一遍
而keySet方式遍歷兩遍
JDK8,使用Map.foreach方法
11 圖片
12 有序性sort 指遍歷結果是按照某種比較規則依次排列的
穩定性stability 集合每次遍歷的元素次序一定
ArrayList 是stability/unsort
HashMap是unstability/unsort
TreeMap是stability/sort
13 利用Set元素唯一特性,快速對集合元素去重操作