1. 程式人生 > >Java之Set、可變引數

Java之Set、可變引數

一、java.util.Set

是Collection介面的子介面,特點:

  1. 不允許重複元素
  2. 不保證先後順序
  3. 沒有索引值

二、常用的實現類:

  1. HashSet:底層使用雜湊表,查詢物件的速度嗷嗷快。
  2. LinkedHashSet:底層也是雜湊表,但是額外還有連結串列,用來維護先後順序。
  3. 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)必須處於最後一個位置。