首頁 > 軟體

Java 詳解Collection集合之ArrayList和HashSet

2022-03-23 16:00:09

Collection

Collection介面被List介面和Set介面繼承

本章只介紹常用的集合

List

ArrayList是List介面的實現類

ArrayList

ArrayList 類是一個可以動態修改的陣列,與普通陣列的區別就是它是沒有固定大小的限制,我們可以新增或刪除元素。

ArrayList 繼承了 AbstractList ,並實現了 List 介面。

建立ArrayList物件:

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
    }
}

向集合中新增資料:

add()

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
        list.add("a");
        list.add(1);
        list.add(1);
        System.out.println(list);
    }
}

清空集合資料:

clear()

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
        list.add("a");
        list.add(1);
        list.add(1);
        System.out.println(list);
        list.clear();
        System.out.println(list);
    }
}

修改指定索引位置的物件

set()

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
        list.add("a");
        list.add(1);
        list.add(1);
        System.out.println(list);
        list.set(2, "a");
        System.out.println(list);
    }
}

Set

HashSet

  • HashSet 基於 HashMap 來實現的,是一個不允許有重複元素的集合。
  • HashSet 允許有 null 值。
  • HashSet 是無序的,即不會記錄插入的順序。
  • HashSet 不是執行緒安全的, 如果多個執行緒嘗試同時修改 HashSet,則最終結果是不確定的。 您必須在多執行緒存取時顯式同步對 HashSet 的並行存取。
  • HashSet 實現了 Set 介面。

建立ArrayList物件:

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
      
    }
}

向集合中新增資料:

add()

集合中的元素不能重複

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
        set.add(1);
        set.add("a");
        set.add("a");
        System.out.println(set);
    }
}

清空集合資料:

clear()

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
        set.add(1);
        set.add("a");
        set.add("a");
        System.out.println(set);
        set.clear();
        System.out.println(set);
    }
}

刪除指定元素

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
        set.add(1);
        set.add("a");
        set.add("a");
        System.out.println(set);
        set.remove("a");
        System.out.println(set);
    }
}

ArrayList和HashSet的區別

1.HashSet 是不重複的 而且是無序的! 唯一性保證. 重複物件equals方法返回為true ,重複物件hashCode方法返回相同的整數 HashSet其實就是一個HashMap,只是你只能通過Set介面操作這個HashMap的key部分

2.ArrayList是可重複的 有序的 特點:查詢效率高,增刪效率低 輕量級 執行緒不安全。 arraylist:在資料的插入和刪除方面速度不佳,但是在隨意提取方面較快

泛型

泛型程式設計(generic programming)是程式設計語言的一種風格或正規化。泛型允許程式設計師在強型別程式設計語言中編寫程式碼時使用一些以後才指定的型別,在範例化時作為引數指明這些型別。各種程式設計語言和其編譯器、執行環境對泛型的支援均不一樣。

一般用集合的時候都會用到泛型,泛型就是給集合加一個型別約束。 它可以是String、可以是Object 泛型不支援基本型別int,請使用包裝器型別 Integer

建立泛型:

List<String> list = new ArrayList<>();

這樣這個集合裡面只能加String型別。

到此這篇關於Java 詳解Collection集合之ArrayList和HashSet的文章就介紹到這了,更多相關Java Collection集合內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com