java8两个list集合取并集
时间: 2023-11-24 11:19:06 浏览: 86
可以使用Java 8的Stream API中的concat和distinct方法取两个List集合的并集,示例代码如下:
List<String> list1 = Arrays.asList("Java", "Python", "Ruby");
List<String> list2 = Arrays.asList("Java", "C++", "PHP");
List<String> union = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
System.out.println(union);
输出结果为:[Java, Python, Ruby, C++, PHP]
相关问题
java8两个List集合取交集、并集、差集、去重并集
Java 8 中可以使用 Stream API 来实现集合之间的交集、并集、差集、去重并集。
假设有两个 List 集合:list1 和 list2,分别包含一些元素,代码如下:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
```
下面分别介绍如何实现集合之间的操作。
1. 取交集
取交集即获取两个集合中共同拥有的元素。可以使用 Stream API 的 `filter()` 方法和 `contains()` 方法实现。代码如下:
```java
List<Integer> intersection = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println("交集:" + intersection); // 输出 [4, 5]
```
2. 取并集
取并集即获取两个集合中所有的元素,但是去重。可以使用 Stream API 的 `distinct()` 方法和 `concat()` 方法实现。代码如下:
```java
List<Integer> union = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
System.out.println("并集:" + union); // 输出 [1, 2, 3, 4, 5, 6, 7, 8]
```
3. 取差集
取差集即获取两个集合中不同的元素。可以使用 Stream API 的 `filter()` 方法和 `!contains()` 方法实现。代码如下:
```java
List<Integer> diff1 = list1.stream()
.filter(e -> !list2.contains(e))
.collect(Collectors.toList());
System.out.println("差集1:" + diff1); // 输出 [1, 2, 3]
List<Integer> diff2 = list2.stream()
.filter(e -> !list1.contains(e))
.collect(Collectors.toList());
System.out.println("差集2:" + diff2); // 输出 [6, 7, 8]
```
4. 去重并集
去重并集即获取两个集合中所有的元素,并且去重。可以使用 Stream API 的 `distinct()` 方法和 `flatMap()` 方法实现。代码如下:
```java
List<Integer> distinctUnion = Stream.of(list1, list2)
.flatMap(List::stream)
.distinct()
.collect(Collectors.toList());
System.out.println("去重并集:" + distinctUnion); // 输出 [1, 2, 3, 4, 5, 6, 7, 8]
```
java 两个list取差集 并集 差集
在 Java 中,可以通过集合框架中的 Set 接口来实现两个 List 的取差集、并集和交集操作。
对于两个 List 取并集,可以先将一个 List 加入到 Set 中,然后再将另一个 List 的元素加入到 Set 中。这样就可以去掉重复元素,得到两个 List 的并集。
对于两个 List 取交集,同样可以先将一个 List 加入到 Set 中,然后再遍历另一个 List,将其元素与 Set 中的元素比较,如果相同就将其加入到另一个 Set 中,最后得到的就是两个 List 的交集。
对于两个 List 取差集,可以先将一个 List 加入到 Set 中,然后再遍历另一个 List,将其元素从 Set 中移除,最后得到的就是两个 List 的差集。
下面是示例代码:
```
import java.util.*;
public class Test {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
// 求并集
Set<Integer> union = new HashSet<>(list1);
union.addAll(list2);
System.out.println("并集:" + union);
// 求交集
Set<Integer> intersection = new HashSet<>(list1);
intersection.retainAll(list2);
System.out.println("交集:" + intersection);
// 求差集
Set<Integer> difference = new HashSet<>(list1);
difference.removeAll(list2);
System.out.println("差集:" + difference);
}
}
```
阅读全文