java8写一个当List<B>中存在List<A>中没有的数据时,向ListA中根据条件追加数据的共通方法
时间: 2024-05-05 10:17:33 浏览: 99
可以尝试如下实现:
```
public static <A, B> void appendToListA(List<A> listA, List<B> listB, Predicate<B> condition, Function<B, A> mapper) {
Set<A> setA = new HashSet<>(listA);
for(B b : listB) {
if(condition.test(b)) {
A a = mapper.apply(b);
if(!setA.contains(a)) {
listA.add(a);
setA.add(a);
}
}
}
}
```
调用示例:
```
List<A> listA = new ArrayList<>();
List<B> listB = new ArrayList<>();
// 填充listA和listB数据
appendToListA(listA, listB, b -> b.getSomeProperty() == someValue, b -> {
A a = new A();
// 将b的数据转换为a的数据
return a;
});
```
其中,`condition`参数用于判断`listB`中的元素是否需要追加到`listA`中,`mapper`参数用于将`listB`中的元素转换为`listA`中的元素。这里使用了`Set`来判断`listA`中是否已经存在相同的元素,避免了重复添加。
阅读全文