Java 获取两个TreeSet的并集和交集

Java 获取两个TreeSet的并集和交集

TreeSet 是一个在Java中实现 Set 接口的类。在一个树集中,元素按照排序顺序存储,它内部使用一个叫做二叉搜索树的平衡树来实现排序。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() − 这个方法用于清除TressSet中的所有元素。

treeSetObject.clear(); // removes all elements from set

contains() - 该方法用于检查传递给参数的元素是否存在于TrssSet中。它返回一个布尔值。如果元素存在,则返回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 conatians elements or not

addAll() − 该方法用于将一个集合中的元素添加到另一个集合中。它接受一个集合类型的参数,将该参数中的元素添加到调用该方法的集合中。

colletion_1.addAll(collection_2);

retainAll() −此方法用于保留两个集合中都存在的元素,即将调用此方法的集合与作为参数传递的集合进行比较。它返回一个布尔值。如果调用该方法的集合被修改,则返回true,否则返回false。

boolean result  = collection_1.retainAll(collection_2);

现在,我们详细讨论如何实现用于查找两个TreeSet的并集和交集的Java代码的代码实现。

方法1:使用addAll()和retainAll()

在这个方法中,我们将使用Java提供的addAll()和retainAll()方法来找到两个TreeSet的并集和交集。

步骤

  • 通过使用Arrays.asList()将数组元素转换为列表,初始化两个TreeSet,即s1和s2。

  • 将s1复制为union TreeSet,并使用addAll()方法添加s2中的所有元素并打印它。

  • 将s1复制为intersection TreeSet,并使用retainAll()方法找到s1和s2之间的共同元素并打印它。

示例

在这个例子中,我们创建两个树对象s1和s2,并用值初始化它们,然后我们在s1对象上创建一个名为“union”的TreeSet的新对象,并使用addAll()方法添加s2中的元素,从而获得集合s1和s2的所有元素,即两个TreeSet s1和s2的并集。我们在s1对象上创建一个名为“intersection”的TreeSet的新对象,并使用retainAll()方法从s1和s2的TreeSet中获取所有共同元素。

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以获得两个TreeSet的并集。对于交集,我们循环遍历两个TreeSet,并找到共同的元素。

步骤

  • 通过将数组元素转换为列表使用Arrays.asList(),初始化两个TreeSets s1和s2。

  • 创建一个空的TreeSet union,并通过遍历s1和s2的元素并使用add()将它们添加到union中。

  • 创建一个空的TreeSet intersection,并通过遍历s1和使用contains()找到s1中存在于s2的元素,如果元素存在,则使用add()将其添加到intersection中。

  • 打印union和intersection两个TreeSets。

示例

在这个示例中,我们创建两个tree对象s1和s2,并将它们初始化为具有值,然后我们创建一个名为’union’的TreeSet对象,并使用for-each循环将来自s1和s2两个集合的所有元素添加到该集合中。然后,我们创建一个名为’intersection’的新treeset,使用foreach循环遍历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找到两个TreeSet的并集和交集的不同方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程