今天開始學java(十幾)HashSet

set接口的特點:
1、不允許存儲重複的元素
2、沒有索引,沒有帶索引的方法,也不能用for循環遍歷
java.util.HashSet集合,實現了Set接口
HashSet特點:
除了set接口的特點外,還增加了是一個無序的集合,存儲元素和取出元素的順序有可能不一致
底層是一個哈希表結構(查詢的速度非常快)
哈希值:是一個十進制的整數,由系統隨機給出(就是對象的地址值,是一個邏輯地址,不是數據儲存的物理地址)
在object類有一個方法,可以獲取對象的哈希值

public class Demo02 {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(3);
        set.add(2);
        set.add(1);
        //因爲不能使用for循環所以使用迭代器遍歷set集合
        Iterator<Integer> it = set.iterator();
        while (it.hasNext()){
            Integer n = it.next();
            System.out.println(n);
        }
        System.out.println(set);
    }

set集合存儲元素不重複的原理是因爲重寫了HashCode方法和equals方法,首先比較兩個字符串的哈希值是否衝突,如果不衝突,就添加,如果哈希值衝突,再調用queals方法和哈希值相同的元素進行比較,如果返回false,則認定兩個兩個元素不同。

可變參數

可變參數是jdk1.5之後出現的新特性
適用前提:
當方法的參數列表數據類型已經確定,但是參數的個數不確定,就可以使用可變參數
格式:定義方法時
修飾符 返回值類型 方法名(數據類型...變量名){}
可變參數的原理:
可變參數底層就是一個數組,根據傳遞參數個數不同,會創建不同長度的數組,來存儲這些參數
傳遞的參數個數,可以是0個,N個。
比如說我們要定義一個方法計算三個整數int的和,我們可以

    public static int adda(int a,int b,int c){
        return a+b+c;

但是如果需求變了我們要計算N個整數int的和怎麼辦?這時候就可以使用可變參數

    int i = addb(1,2,3);
    System.out.println(i);
}
    public static int addb(int...arr){
    //定義一個初始化變量,記錄累加求和
    int sum = 0;
    //遍歷數組,獲取數組中的每一個元素
        for (int i : arr) {
            //累加求和
            sum+=i;
        }
        //返回求和結果
        return sum;
    }

可變參數使用注意事項:
1、一個方法的參數列表只能有一個可變參數
2、如果方法的參數有多個,那麼可變參數必須寫在參數列表的末尾
public static void test(String b,double c,int d,int...a){}
可變參數的特殊(終極)寫法:
public static void test(Object...obj){}

發佈了77 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章