java8 两个list<bean>去重合并
时间: 2024-09-11 07:05:22 浏览: 44
将list<bean>中的内容根据某一属性的值对list进行拆分
在Java 8中,你可以使用Stream API来实现两个`List<Bean>`的去重合并。这里有几种常见的方法来完成这个任务,其中一种是使用`Stream`和`Collectors.toSet()`来去除重复的元素,然后合并两个列表。另一个方法是使用`Stream`的`distinct()`方法来去除重复元素,然后通过`collect(Collectors.toList())`将结果收集回`List`。
以下是使用`Stream`和`Collectors.toSet()`方法合并两个列表并去除重复项的示例代码:
```java
List<Bean> list1 = ...; // 第一个List<Bean>
List<Bean> list2 = ...; // 第二个List<Bean>
// 使用stream将两个列表合并,并通过Collectors.toSet()去除重复项
List<Bean> distinctList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toSet())
.stream().collect(Collectors.toList());
```
这里假设`Bean`类已经正确重写了`equals()`和`hashCode()`方法,这样`Collectors.toSet()`才能正确识别重复的`Bean`实例。如果没有重写这两个方法,你需要提供一个自定义的比较器给`Collectors.toCollection()`方法。
以下是使用`distinct()`方法合并两个列表并去除重复项的示例代码:
```java
List<Bean> list1 = ...; // 第一个List<Bean>
List<Bean> list2 = ...; // 第二个List<Bean>
// 使用stream将两个列表合并,然后使用distinct()去除重复项
List<Bean> distinctList = Stream.of(list1, list2)
.flatMap(List::stream)
.distinct()
.collect(Collectors.toList());
```
使用`distinct()`方法同样假设`Bean`类已经正确实现了`equals()`和`hashCode()`方法。
阅读全文