迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

两个 Java 集合的并集和交集

作者:迹忆客 最近更新:2023/10/17 浏览次数:

我们将在这个演示中实现两个程序。第一个示例将使你对确定并集和交集的纯 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(当前项目源文件夹)并设置路径。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的动态方法调度

发布时间:2023/10/18 浏览次数:199 分类:Java

本教程展示了 Java 中动态方法分派的定义、优势和使用。本教程介绍了 Java 中的动态方法分派。它讲述了它的技术定义和重要性,并用代码示例进行了解释。

Java 中的 abs() 方法

发布时间:2023/10/18 浏览次数:184 分类:Java

本教程通过 Java 中的不同代码示例介绍如何使用 abs() 方法。我们将学习 Java 中的 abs() 方法来查找指定数字的绝对值。我们将通过编写和练习各种代码示例来学习。

在 Java 中使用 System.exit() 方法

发布时间:2023/10/18 浏览次数:157 分类:Java

本文介绍 Java 中 System.exit() 方法的作用。本教程介绍了 Java 中的 System.exit() 方法的作用。System 是 Java 中的一个类,它提供了几种实用方法来处理与系统相关的任务,例如 exit() 方法用于停止当前

在 Java 中编写本机方法

发布时间:2023/10/18 浏览次数:57 分类:Java

本文演示了本机方法是什么以及如何在 Java 程序中编写本机方法。本文将引导你完成学习如何在 Java 程序中编写本机方法所需的各个步骤。

Java 中静态方法和非静态方法的区别

发布时间:2023/10/18 浏览次数:134 分类:Java

本教程对 Java 中的静态和非静态方法进行了分类,同时区分了它们的核心属性和范围。之后,我们将对这两种方法运行三个示例。

Java 中的私有方法

发布时间:2023/10/18 浏览次数:51 分类:Java

本教程演示了 Java 中私有方法的使用。Java 中的私有方法有一个私有访问修饰符,这意味着它们对定义类的访问受到限制,并且在继承的子类中不可访问;这就是为什么他们没有资格覆盖。

Java 中的流过滤器

发布时间:2023/10/18 浏览次数:130 分类:Java

本文介绍 Java 中的流 API 及其过滤方法。本教程介绍 Java 中的流 API 及其 filter() 方法。在 Java 中,流是对象的集合。

Java 中的方法重载

发布时间:2023/10/18 浏览次数:186 分类:Java

本教程简要介绍了 Java 中的方法重载。它还演示了我们如何以及何时可以在 Java 编程中使用方法重载。如果你正在学习 Java 编程,你可能听说过方法重载。我们将在本文中介绍 Java 中的方法重载

Java 中的方法隐藏

发布时间:2023/10/18 浏览次数:137 分类:Java

本文介绍了 Java 中方法隐藏的概念。在本文中,我们将研究 Java 中方法隐藏的概念。方法隐藏类似于重载,但是当对子类和父类中的静态函数使用相同的方法签名时,它就会发挥作用。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便