在 Java 中查詢集合交點
術語 Set
是 java.util
包中的一個介面。集合是儲存無序列表的集合介面,不允許儲存重複的實體。在數學上,set 介面具有三個屬性。
- Set 中的元素不為空。
- Set 中沒有兩個元素可以相等。
- 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.75
。HashSet
類與 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 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