两个 Java 集合的并集和交集
我们将在这个演示中实现两个程序。第一个示例将使你对确定并集和交集的纯 Java 方法有深入的了解。
第二个示例将让你使用 Google 的 Guava API 来操作集合。两种算法都成功地确定了结果,同时避免了脏代码。
在 Java 中定义并集和交集
- 并集 - 集合 A 或集合 B 中存在的实体数量是 A 和 B 集合的并集。
- 交集 - 两个数组 A 和 B 的交集确定属于 A 和 B 组的元素。
- 集合 - 确定两个 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()
表示交集。
-
addAll()
语法:
Set<String> union = new HashSet<>(s1); union.addAll(s2); System.out.println("Result of union:"+union);
操作:
假设给定数组中的值尚不可用。它将它们添加到集合中。
同样,如果给定的集合也是一个集合,它会将这个集合的值更改为两个集合的并集。
假设在执行操作时修改了提供的数组。操作的状态未定义。
-
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 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,