兩個 Java 集合的並集和交集

Sarwan Soomro 2023年1月30日 2022年4月27日
  1. 在 Java 中定義並集和交集
  2. 瞭解用於並集和交集的 Java 方法
  3. 使用純 Java 實現兩個字串集的並集
  4. Java 中使用 Guava 庫的兩個集合的並集和交集
兩個 Java 集合的並集和交集

我們將在這個演示中實現兩個程式。第一個示例將使你對確定並集和交集的純 Java 方法有深入的瞭解。

第二個示例將讓你使用 Google 的 Guava API 來操作集合。兩種演算法都成功地確定了結果,同時避免了髒程式碼。

在 Java 中定義並集和交集

  1. 並集 - 集合 A 或集合 B 中存在的實體數量是 A 和 B 集合的並集。
  2. 交集 - 兩個陣列 A 和 B 的交集確定屬於 A 和 B 組的元素。
  3. 集合 - 確定兩個 Java 集的並集/交集的最常用方法。

集合的語法:

//First of all, define your sets as
// Demo set 1
Set<String> s1 = new HashSet<String>();
s1.add("a");
s1.add("b");
s1.add("c");
// set 2
Set<String> s2 = new HashSet<String>();
s2.add("d");
s2.add("e");
s2.add("a");

並集和交集(最簡單的方法):

//union
Set<String> union = new HashSet<>(s1);
union.addAll(s2);
//intersection
Set<String> intersect = new HashSet<String>(s1);
intersect.retainAll(s2);
注意
你可能還不瞭解邏輯流程。繼續閱讀文章以連線缺失的點。

瞭解用於並集和交集的 Java 方法

在前面的例子中,我們分別定義了兩個陣列集 (s1)(s2)。之後,我們利用兩種方法確定了它們的並集和交集值。

例如,addAll() 表示並集,而 retainAll() 表示交集。

  1. addAll()

    語法:

    Set<String> union = new HashSet<>(s1);
    union.addAll(s2);
    System.out.println("Result of union:"+union);
    

    操作:

    假設給定陣列中的值尚不可用。它將它們新增到集合中。

    同樣,如果給定的集合也是一個集合,它會將這個集合的值更改為兩個集合的並集。

    假設在執行操作時修改了提供的陣列。操作的狀態未定義。

  2. retainAll()

    語法:

    Set<String> intersect = new HashSet<String>(s1);
    intersect.retainAll(s2);
    System.out.println("Result of intersection:"+intersect);
    

    操作:

    它僅將給定實體儲存在集合中提供的集合集合中。準確地說,它消除了該集合中不存在於給定陣列中的所有專案。

    雖然它還修改/更新這個集合,以便如果給定集合也是一個集合,它的值是兩個組的交集。如果該集合已被修改,則其返回值為 true

使用純 Java 實現兩個字串集的並集

先前的定義是形成清晰的必要先決條件。現在你必須熟悉 Java 角色中並集和交集的功能、語法和操作行為。

程式碼:

import java.util.*;
public class UnionIntersectionJavaExample{
public static void main(String[] args) {
//set 1
	Set<String> s1 = new HashSet<String>();
	s1.add("a");
	s1.add("b");
	s1.add("c");
//set 2
    Set<String> s2 = new HashSet<String>();
    s2.add("d");
	s2.add("e");
	s2.add("a");
//union
	Set<String> union = new HashSet<>(s1);
	union.addAll(s2);
	System.out.println("Result of union:"+union);
//intersection
	Set<String> intersect = new HashSet<String>(s1);
	intersect.retainAll(s2);
	System.out.println("Result of intersection:"+intersect);
	}
}

輸出:

Result of union:[a, b, c, d, e]
Result of intersection:[a]

Java 中使用 Guava 庫的兩個集合的並集和交集

儘管這取決於你的要求,但並不總是需要將 API 用於像並集和交集這樣簡單的問題陳述。

也就是說,使用這個 Guava 庫還可以讓你瞭解各種簡單的方法。使用 Guava,指定集合比以前更簡單。

Set<String>
mysets1 = Sets.newHashSet("This", "is", "set","one");

同樣,使用方法也更容易。

//For union sets
//Sets.union (reserved function in Guava)
    union = Sets.union(mysets1, mysets2);
//For interation
//Sets.intersect (reserved method in Guava)
    intersection = Sets.intersection(mysets1, mysets2);

程式碼:(Guava)

import com.google.common.collect.Sets;
import java.util.Set;
public class UnionAndIntersectionGuava {
public static void main(String[] args)
	{
	// Your first Set
	Set<String>
	mysets1 = Sets.newHashSet("This", "is", "set","one");
	// Your Second Set
	Set<String>
	mysets2 = Sets.newHashSet("Here", "is", "set","two");
	// We will use Guava's Sets.union() method
	Set<String>
	union = Sets.union(mysets1, mysets2);
	Set<String>
	intersection = Sets.intersection(mysets1, mysets2);
	// Print the output
	//System.out.println("Set 1:"+mysets1);
	//System.out.println("Set 2:"+ mysets2);
	System.out.println("Union:"+ union);
	//System.out.println("Set 1:"+mysets1);
	//System.out.println("Set 2:"+ mysets2);
	System.out.println("Intersection:"+ intersection);
	}
}
}

輸出:

Union:[This, is, set, one, Here, two]
Intersection:[is, set]

你可以從此處下載此 API。之後,將其匯入你的 IDE(當前專案原始檔夾)並設定路徑。

注意
在 Java 中還有其他確定並集和交集的方法。但是我們執行了最新的技術。
Sarwan Soomro avatar Sarwan Soomro avatar

Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.

LinkedIn

相關文章 - Java Set