用java语言,用stream来写,两个集合的交,并,差集合
时间: 2023-04-01 14:04:56 浏览: 71
好的,这是一个关于 Java 语言的问题。使用 Stream 来实现两个集合的交集、并集和差集可以这样做:
// 假设有两个集合 A 和 B
List<Integer> A = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> B = Arrays.asList(4, 5, 6, 7, 8);
// 交集
List<Integer> intersection = A.stream().filter(B::contains).collect(Collectors.toList());
// 并集
List<Integer> union = Stream.concat(A.stream(), B.stream()).distinct().collect(Collectors.toList());
// 差集
List<Integer> difference = A.stream().filter(item -> !B.contains(item)).collect(Collectors.toList());
以上就是使用 Stream 实现两个集合的交集、并集和差集的方法。希望能对你有所帮助。
相关问题
JAVA stream两个集合忽略大小写取交集
您可以使用Java 8的Stream来实现忽略大小写取两个集合的交集。这里有一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("A");
list1.add("B");
list1.add("C");
List<String> list2 = new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("c");
List<String> intersection = list1.stream()
.filter(s -> list2.stream().anyMatch(s2 -> s2.equalsIgnoreCase(s)))
.collect(Collectors.toList());
System.out.println(intersection);
}
}
```
在上面的代码中,我们使用了两个`List`集合(`list1`和`list2`),并使用`stream()`方法将它们转换为流。然后,我们使用`filter()`方法过滤出在`list2`中忽略大小写匹配的元素,并将结果收集到一个新的List中。最后,我们打印出交集的结果。
输出结果将是:`[A, B, C]`
这样,您就可以忽略大小写地获取两个集合的交集了。希望对您有所帮助!如果您有任何其他问题,请随时提问。
stream java如何取出集合里面的两个字段并封装为另一个集合
可以使用Java 8的Stream API来完成这个任务。假设你有一个包含对象的集合,每个对象都有两个字段`field1`和`field2`。你想要从这个集合中取出这两个字段,并将它们封装为另一个对象的集合。以下是一种可能的实现方法:
```java
List<OriginalObject> originalList = ...; // 原始集合
List<NewObject> newList = originalList.stream()
.map(o -> new NewObject(o.getField1(), o.getField2())) // 将原始对象转换为新对象
.collect(Collectors.toList()); // 封装为新的集合
```
这个代码片段使用了`map()`方法将原始对象转换为新对象,然后使用`collect()`方法将转换后的对象收集到一个新的集合中。`NewObject`是一个包含`field1`和`field2`字段的对象,你需要根据自己的需求来定义它。