在 Java 中查詢集合交點

Rashmi Patidar 2023年10月12日
在 Java 中查詢集合交點

術語 Setjava.util 包中的一個介面。集合是儲存無序列表的集合介面,不允許儲存重複的實體。在數學上,set 介面具有三個屬性。

  1. Set 中的元素不為空。
  2. Set 中沒有兩個元素可以相等。
  3. Set 不保留插入順序。

在 Java 中使用集合插入和查詢集合交集

你可以看到下面的程式,該程式演示了 Java 中的 Set 插入和查詢兩個集合之間的交集。

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SetIntersection {
  public static void main(String[] args) {
    Set<Integer> s1 = new HashSet<>();
    s1.add(2);
    s1.add(7);
    s1.add(1);
    System.out.println("Set1: " + s1);
    List list = Arrays.asList(1, 7, 6, 8);
    Set<Integer> s2 = new HashSet<>(list);
    System.out.println("Set2: " + s2);
    Set<Integer> intersection = new HashSet<>(s1);
    intersection.retainAll(s2);
    System.out.println("Intersection: " + intersection);
  }
}

在上面的程式碼中,一個集合被宣告為該過程的第一步。new HashSet 建立 HashSet 類的一個新例項,並將形成的引用分配給 Set 例項。HashSet 的預設容量是 16,負載因子是 0.75HashSet 類與 Set 介面相容,因為 HashSet 在內部實現了 Set 介面。

變數 s1 使用 add 方法進行初始化。該函式將定義型別的物件新增到 Set 例項中,考慮到該物件非空且不重複。該函式根據是否插入值返回 boolean。如果指定元素的類與 Set 例項的類不相似,則該函式將引發 ClassCastException。如果元素為空值,則丟擲 NullPointerException,如果元素的某些屬性禁止將其新增到 Set 集合中,則丟擲 IllegalArgumentException

建立集合的另一種方法是使用傳遞給 HashSet 建構函式引數的 list 例項。使用 Arrays 類的 asList 方法使用定義的值初始化列表。列表的例項作為 HashSet 建構函式中的引數傳遞。Set 集合不保留元素的儲存順序。

Set 的另一個例項使用 s1 例項作為建構函式引數進行例項化。現在,這個 intersection 引用呼叫另一個方法,即 retainAll 函式。該函式僅保留呼叫例項和被呼叫例項時存在的元素。當在 retain 操作中更改 Set 時,該方法返回布林值 true。如果它不支援對集合的操作,它會丟擲一個 UnsupportedOperationException。如果集合型別不相容,則丟擲 ClassCastException,如果 Set 包含空元素,則丟擲 NullPointerException

上述集合之間的交集的輸出如下。

輸出:

Set1: [1, 2, 7]
Set2: [1, 6, 7, 8]
Intersection: [1, 7]
作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

相關文章 - Java Set