Java程序获取两个TreeSet的并集和交集
TreeSet 是一个实现Set接口的类,在Java中。在TreeSet中,元素按排序顺序存储,因为它内部使用称为二叉搜索树的排序平衡树实现。TreeSet中的元素默认按升序存储。并集包含两个集合中的所有元素。交集包含两个集合中都存在的元素。
在本节中,我们将讨论如何使用Java获取两个TreeSet的并集和交集。
什么是集合的并集和交集?
并集 - 集合的并集包含集合A、集合B或两者中的所有元素。如果一个元素同时存在于两个集合中,那么我们只在结果并集中显示一次。
A={1,2,3,4}
B={3,4,5}
A union B ={1,2,3,4,5}
交集 - 集合的交集包含两个集合中都存在的元素。
A={1,2,3,4}
B={3,4,5}
A intersection B={3,4}
现在我们将深入了解Java提供的TreeSet的基本操作以及方法的语法和用法。
TreeSet的基本操作
这里,我们将讨论使用Java TreeSet类提供的内置方法可以在TreeSet上执行的基本操作。
add() - 此方法用于向TreeSet添加元素。它接受一个参数,基本上是存储在TreeSet中的元素的类型。
treeSetObject.add(element)
remove() - 此方法用于从TreeSet中删除元素。传递给此方法的元素将从TreeSet中删除。
treeSetObject.remove("b"); // removes "b" from the set
clear() - 此方法用于清除TreeSet中的所有元素。
treeSetObject.clear(); // removes all elements from set
contains() - 此方法用于检查作为参数传递的元素是否在TreeSet中存在。它返回布尔值。如果元素存在,则返回true,否则返回false。
boolean val = treeSetObject.contains(‘b’); // checks ‘b’ is present and returns boolean value
isEmpty() - 此方法用于检查TreeSet是否为空。它返回布尔值。如果TreeSet为空,则返回true,否则返回false。
boolean val = treeSetObject.isEmpty(); // checks hashSet contains elements or not
addAll() - 此方法用于将一组元素添加到其调用的另一个集合中。它接受一个集合类型的参数,从中它将元素添加到其调用的集合中。
colletion_1.addAll(collection_2);
retainAll() - 此方法用于保留两个集合中都存在的元素,即它将调用此方法的集合与作为参数传递的集合进行比较。它返回一个布尔值。如果调用它的集合被修改,则返回true,否则返回false。
boolean result = collection_1.retainAll(collection_2);
现在,我们将详细讨论如何实现Java代码以查找两个TreeSets的并集和交集。
方法1:使用addAll()和retainAll()
在这种方法中,我们将使用Java提供的addAll()和retainAll()方法来查找两个TreeSets的并集和交集。
算法
使用Arrays.asList()将数组元素转换为列表,初始化两个TreeSet,分别为s1和s2。
将s1复制为并集TreeSet,并使用addAll()添加s2的所有元素,然后打印它。
将s1复制为交集TreeSet,并使用retainAll()查找s1和s2之间的公共元素,然后打印它。
示例
在这个例子中,我们创建了两个树对象s1、s2并用值初始化它们,然后我们在s1对象上创建一个名为“union”的TreeSet新对象,我们使用addAll()方法将s2中存在的元素添加到其中,以获取s1和s2中存在的元素,这也就是两个TreeSets s1和s2的并集。我们在s1对象上创建一个名为“intersection”的TreeSet新对象,我们使用retainAll()方法从s1和s2 TreeSets中获取所有公共元素。
import java.util.*;
public class Main{
public static void main(String[] args) {
TreeSet<Integer> s1 = new TreeSet<>(Arrays.asList(2, 8, 7, 3));
TreeSet<Integer> s2 = new TreeSet<>(Arrays.asList( 5, 2, 7));
TreeSet<Integer> union = new TreeSet<>(s1);
union.addAll(s2);
System.out.println("Union Set : " + union);
TreeSet<Integer> intersection = new TreeSet<>(s1);
intersection.retainAll(s2);
System.out.println("Intersection Set : " + intersection);
}
}
输出
Union Set : [2, 3, 5, 7, 8] Intersection Set : [2, 7]
方法2:使用迭代语句
在这种方法中,我们将使用Java提供的for-each循环,遍历两个集合并将它们添加到另一个TreeSet中以获取两个TreeSets的并集。对于交集,我们遍历两个TreeSets并找到公共元素。
算法
使用Arrays.asList()将数组元素转换为列表,初始化两个TreeSet s1、s2。
创建一个空TreeSet并集,遍历s1和s2的元素,并使用add()将它们添加到并集中。
创建一个空TreeSet交集,遍历s1并使用contains()查找s2中存在的元素,如果元素存在,则使用add()将它们添加到交集TreeSet中。
打印并集和交集TreeSets。
示例
在这个例子中,我们创建了两个树对象s1、s2并用值初始化它们,然后我们创建一个名为“union”的TreeSet新对象,并使用for-each循环将两个集合s1和s2的所有元素添加到该集合中。然后我们创建一个名为“intersection”的新TreeSet,并使用for each循环遍历s1,并检查该元素是否在s2中,如果存在,则将其添加到“intersection”TreeSet中。然后我们打印这两个TreeSets。
import java.util.*;
public class Main {
public static void main(String[] args) {
TreeSet<Integer> s1 = new TreeSet<>(Arrays.asList(2, 8, 7, 3));
TreeSet<Integer> s2 = new TreeSet<>(Arrays.asList(5, 2, 7));
TreeSet<Integer> union = new TreeSet<>();
for (Integer element : s1) {
union.add(element);
}
for (Integer element : s2) {
union.add(element);
}
TreeSet<Integer> intersection = new TreeSet<>();
for (Integer element : s1) {
if (s2.contains(element)) {
intersection.add(element);
}
}
System.out.println("Union: " + union);
System.out.println("Intersection: " + intersection);
}
}
输出
Union: [2, 3, 5, 7, 8] Intersection: [2, 7]
因此,在这篇文章中,我们学习了使用Java查找两个TreeSets的并集和交集的不同方法。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP