两个对象集合 根据某个属性;将一个集合中有 另一个集合中没有的数据过滤出来
时间: 2024-11-18 08:06:01 浏览: 15
当你有两个对象集合,例如List或Set,想根据它们的一个共同属性进行筛选时,可以使用Java中的流(Stream) API或者传统的迭代器来实现。这里是一个基本步骤:
1. **创建一个函数或方法**:假设你有一个`SourceCollection`和一个`TargetCollection`,每个对象都有一个公共属性`key`。
```java
public List<SourceType> filterMissing(TargetType targetCollection, SourceType sourceType) {
```
2. **确定属性**:从`targetCollection`中获取这个属性的所有值,并将其转换成一个Set,以便快速查找。
```java
Set<String> targetKeys = targetCollection.stream()
.map(TargetType::getKey)
.collect(Collectors.toSet());
```
3. **过滤源集**:遍历`sourceType`列表,检查每个对象的`key`是否在`targetKeys`中,不在则添加到结果列表。
```java
List<SourceType> result = sourceType.stream()
.filter(source -> !targetKeys.contains(source.getKey()))
.collect(Collectors.toList());
```
4. **返回结果**:返回包含目标集中没有的源对象的新列表。
```java
return result;
```
阅读全文