Java之Set、可變引數
阿新 • • 發佈:2018-11-26
一、java.util.Set
是Collection介面的子介面,特點:
- 不允許重複元素
- 不保證先後順序
- 沒有索引值
二、常用的實現類:
- HashSet:底層使用雜湊表,查詢物件的速度嗷嗷快。
- LinkedHashSet:底層也是雜湊表,但是額外還有連結串列,用來維護先後順序。
- TreeSet:有大小排序。
三、重點問題:
Set集合是如何確定有沒有重複元素的?換言之,如何才能得知兩個物件相同還是不同?
雜湊值:int型別---------------------------->hashcode()<--------------地址值(16進位制)
(並非Java程式碼獲取)
地址值與int型別並非一一對應,地址值>>int型,所以可能有雜湊衝突
首先計算出hash值,在%16,放到對應的桶中
四、大小比較方式:
(1)如果希望對集合當中的元素進行排序,但是排序的規則並不寫死在類中,那麼就可以使用方法:
public static void sort(List list, Comparator comp):第二個引數代表排序的規則。
(2)Comparable:用自定義的類自己去實現它。
口訣:升序就是我減他。 public int compareTo(T o)
(3)Comparator:自定義的類自己不用實現,而是作為第二個引數。
口訣:升序就是一減二。public int compare(T o1, To2)
五、可變引數:
可變引數其實是一個語法糖,原理:
(1)底層是一個數組。
(2)在傳參時,可以是任意多個數據。
(3)一個方法中最多有一個可變引數。
(4)必須處於最後一個位置。