有2个List<Bean>,根据Bean中的workNo属性值相同的进行合并成一个新List,并且最后将没有相同的也放进这个新的List
时间: 2023-12-10 14:38:15 浏览: 145
可以先将两个 List<Bean> 合并成一个 List<Bean>,然后再根据 workNo 属性值进行去重。具体实现可以使用 Java 8 的流式操作和 Collectors 工具类来完成:
```java
List<Bean> list1 = ...; // 第一个 List
List<Bean> list2 = ...; // 第二个 List
List<Bean> mergedList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toMap(Bean::getWorkNo, Function.identity(), (bean1, bean2) -> {
// 根据 workNo 属性值进行合并
// 这里的合并方式可以根据实际需求来定制
// 下面示例中简单地将两个 Bean 的属性值相加
bean1.setCount(bean1.getCount() + bean2.getCount());
return bean1;
})).values().stream().collect(Collectors.toList());
// 如果需要将没有相同的 Bean 也放进新的 List 中
// 可以再对原始的两个 List 进行去重操作
list1.removeAll(mergedList);
list2.removeAll(mergedList);
mergedList.addAll(list1);
mergedList.addAll(list2);
```
以上代码中,我们使用 `Stream.concat()` 方法将两个 List 合并成一个 Stream。然后使用 `Collectors.toMap()` 方法根据 Bean 的 workNo 属性值进行合并,其中第二个参数 `Function.identity()` 表示使用 Bean 本身作为 value,第三个参数中的 lambda 函数表示如何合并两个相同 workNo 的 Bean。最后使用 `values().stream().collect(Collectors.toList())` 方法将 Map 转换为 List。
如果需要将没有相同的 Bean 也放进新的 List 中,可以使用 List 的 `removeAll()` 方法去重,再使用 `addAll()` 方法将剩余的 Bean 加入到新的 List 中。
阅读全文