用java找出两个集合中相同的元素和不通的元素

用java找出两个集合中相同的元素和不通的元素

假设有两个集合A和B,可以通过以下代码找出它们中相同的元素和不同的元素:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Set<Integer> A = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
        Set<Integer> B = new HashSet<>(Arrays.asList(3, 4, 5, 6, 7));
        
        // 找出相同的元素
        Set<Integer> intersection = new HashSet<>(A);
        intersection.retainAll(B);
        System.out.println("相同的元素:" + intersection);
        
        // 找出不同的元素
        Set<Integer> difference = new HashSet<>(A);
        difference.addAll(B);
        Set<Integer> tmp = new HashSet<>(A);
        tmp.retainAll(B);
        difference.removeAll(tmp);
        System.out.println("不同的元素:" + difference);
    }
}

 

输出结果:

相同的元素:[3, 4, 5]
不同的元素:[1, 2, 6, 7]
 
 

用java找出两个list集合中相同的元素和不通的元素

 
import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<Integer> A = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        List<Integer> B = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7));
        
        // 找出相同的元素
        List<Integer> intersection = new ArrayList<>(A);
        intersection.retainAll(B);
        System.out.println("相同的元素:" + intersection);
        
        // 找出不同的元素
        List<Integer> difference = new ArrayList<>(A);
        difference.addAll(B);
        List<Integer> tmp = new ArrayList<>(A);
        tmp.retainAll(B);
        difference.removeAll(tmp);
        System.out.println("不同的元素:" + difference);
    }
}

 

 

假设有两个List集合A和B,可以通过以下代码找出它们中相同的元素和不同的元素:


输出结果:

相同的元素:[3, 4, 5]
不同的元素:[1, 2, 3, 4, 5, 6, 7]

需要注意的是,List集合中的元素可以重复,因此相同的元素可能会出现多次。

 

 

用java8 找出两个集合中A集合的元素在B集合不存在的元素

可以使用Java 8中的Stream API来实现在两个集合中找出A集合的元素在B集合不存在的元素。具体步骤如下:

  1. 将B集合转换为一个Set,方便后续使用contains方法来判断元素是否存在。
  2. 使用stream方法将A集合转换为一个流。
  3. 使用filter方法过滤出在B集合中不存在的元素。
  4. 使用collect方法将过滤后的元素收集到一个List中。

下面是具体的代码实现:

List<String> a = Arrays.asList("apple", "banana", "orange", "pear");
List<String> b = Arrays.asList("banana", "pear", "grape");

Set<String> bSet = new HashSet<>(b);

List<String> result = a.stream()
    .filter(e -> !bSet.contains(e))
    .collect(Collectors.toList());

System.out.println(result); // 输出 ["apple", "orange"]

 

在上面的代码中,我们首先定义了两个集合a和b,然后将b集合转换为一个Set。接着,我们使用stream方法将a集合转换为一个流,然后使用filter方法过滤出在b集合中不存在的元素。最后,使用collect方法将过滤后的元素收集到一个List中。最终,我们将结果打印到控制台上。

 

posted @ 2023-04-10 08:53  黄橙  阅读(1902)  评论(0)    收藏  举报