用java的stream流实现,有两个集合,一个对象集合A,一个对象集合B,筛选出来集合A中有和集合B中两个属性相同的集合
时间: 2024-04-10 20:11:32 浏览: 137
可以使用Java 8中的Stream API实现该功能。下面是示例代码:
```
List<ObjectA> listA = ... // 获取对象集合A
List<ObjectB> listB = ... // 获取对象集合B
List<ObjectA> result = listA.stream()
.filter(a -> listB.stream()
.anyMatch(b -> a.getProperty1().equals(b.getProperty1()) && a.getProperty2().equals(b.getProperty2())))
.collect(Collectors.toList());
```
在上面的代码中,我们使用了Java 8中的Stream API来筛选出集合A中具有和集合B中两个属性相同的元素。首先,我们使用`filter()`方法来过滤集合A中的元素。在`filter()`方法的参数中,我们使用另一个`stream()`来遍历集合B,并使用`anyMatch()`方法来检查是否存在具有相同属性的元素。如果存在,则将该元素添加到`result`集合中,最终将其收集到一个新集合中。
需要注意的是,本示例代码仅为伪代码,具体实现可根据具体业务需求进行调整。
相关问题
如何将一个集合放在另一个集合的某个字段 Java stream流实现
假设你有两个类,一个是 `Outer`,另一个是 `Inner`,其中 `Outer` 包含一个 `List<Inner>` 类型的字段 `innerList`,而 `Inner` 包含一个 `String` 类型的字段 `name`。你想要将一个名为 `sourceList` 的 `List<Inner>` 集合添加到 `outerList` 集合中,并将其添加到 `outerList` 中的某个 `Outer` 对象的 `innerList` 字段中。
你可以使用 Java 8 的 Stream API 和 Lambda 表达式来实现此目的,代码如下:
```
List<Outer> outerList = new ArrayList<>();
// 假设你已经有了一个名为 sourceList 的 List<Inner> 集合
String targetOuterName = "targetOuterName"; // 目标 Outer 对象的 name 字段
outerList.stream()
.filter(outer -> outer.getName().equals(targetOuterName))
.findFirst()
.ifPresent(outer -> outer.getInnerList().addAll(sourceList));
```
这段代码首先使用 `stream()` 方法将 `outerList` 转换为 Stream,然后使用 `filter()` 方法筛选出 `name` 字段值等于 `targetOuterName` 的 `Outer` 对象,使用 `findFirst()` 方法获取第一个匹配的对象,最后使用 `ifPresent()` 方法对匹配的 `Outer` 对象执行添加操作。
写一个用stream流筛选两个集合的并集Demo
以下是一个用stream流筛选两个集合的并集的Demo:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
list2.add(5);
list2.add(6);
List<Integer> union = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(union);
}
}
```
这个Demo中,我们创建了两个List,然后使用stream流筛选出它们的并集。具体来说,我们使用了filter()方法和contains()方法,filter()方法用于筛选出list1中包含在list2中的元素,contains()方法用于判断list2中是否包含某个元素。最后,我们使用collect()方法将筛选出的元素收集到一个新的List中,并输出这个List。
阅读全文