1、集合裡只能儲存對象(實際上是對象的引用),數組能儲存基礎資料型別 (Elementary Data Type)和對象(實際上是對象的引用)
2、如果需要查閱Map中的資料時,總是根據Map中的key來擷取。
3、Set裡的元素不能重複;List的長度可變,元素可以重複;Map中的每項資料都由兩個值組成。
4、集合類的訪問方式,List通過索引,Map通過key來訪問,Set只能根據元素本身來訪問。
5、Collection介面是List、Set、Queue介面的父介面。Iterator主要用於遍曆Collection集合中的元素,Iterator對象也被稱為迭代器。
6、Iterator僅用於遍曆集合,Iterator本身並不提供盛裝對象的能力。如果需要建立Iterator對象,則必須要有一個被迭代的集合。沒有集合的Iterator彷彿無本之木。
7、當使用Iterator對集合元素進行迭代時,Iterator並不是把集合元素本身傳給了迭代變數,而是把集合的值傳給了迭代變數,所以修改迭代變數的值對集合本身沒有任何改變,只有通過Iterator的remove方法來刪除上一次next方法返回的集合元素才可以,否則引發異常。
8、類似地,foreach迴圈的迭代變數也不是集合元素本身,系統只是依次把集合元素的值賦給迭代變數,因此在foreach迴圈中修改迭代變數的值也沒有任何實際意義
9、set集合不允許包含相同元素,判斷兩個對象相同不是用==,而是equals方法;常用HashSet類
10、HashSet特點:
不能保證元素的排列順序,順序可能發生變化;HashSet不是同步的,集合元素值可以使null。
11、HashSet集合判斷兩個元素相等的標準:兩個對象通過equals方法比較相等,並且兩個對象的hashCode()方法傳回值也相等。equals返回true但hashCode()傳回值不等,則HashSet會將他們儲存在不同的位置,可以添加成功。
12、重寫hashCode()的方式:
①對象內每個有意義的屬性f(即每個用作equals()比較的屬性)計算出一個int類型的hashCode值。
②利用第①步計算出來多個hashCode組合計算出一個hashCode值返回,為避免偶然性,可以為各屬性乘於任意一個質數後再相加。
13、當向HashSet中添加可變對象時,必須十分小心。若修改HashSet集合中的對象,有可能導致該對象與集合中的其他對象相等,從而導致HashSet無法準確訪問該對象
14、LinkedHashSet也是根據hashCode值來決定元素的儲存位置,但它同時使用鏈表維護元素的次序,即當遍曆LinkedHashSet中的元素時,HashSet將會按元素的添加順序來訪問集合裡的元素(正好是添加的時候的順序)
15、TreeSet可以確保集合元素處於排序狀態,TreeSet採用紅/黑樹狀結構的資料結構對元素進行排序,支援自然排序(按升序)和定製排序兩種,預設是自然排序
16、TreeSet會調用該對象的compareTo(Object obj)方法與集合中的其他元素進行比較
17、在TreeSet中判斷兩個對像不相等的標準:兩個對象通過equals方法返回false,或者通過compareTo(Object obj)比較沒有返回0
18、當需要將一個對象放入TreeSet中時,重寫該對象對應類的equals()方法時,應該保證該方法與compareTo(Object obj)方法有一致的結果,其規則是:如果兩個對象通過equals方法返回true時,這兩個對象通過compareTo(Object obj)方法比較也應該返回0