现有一list集合,元素为list<object>,list集合中包含多个list<object>,使用java steam流实现。将list集合中的多个list<object>循环遍历并根据object中的id进行去重返回list<object>格式
时间: 2023-09-10 15:08:11 浏览: 104
list集合去除重复对象的实现
假设`List<Object>`中的对象有一个`id`属性,可以使用Java 8的Stream API来实现。假设我们有一个名为`listOfLists`的`List<List<T>>`类型的集合,其中`T`是元素的类型。则可以使用以下代码将集合中的多个`List<T>`循环遍历并根据`id`属性进行去重返回`List<T>`格式:
```java
List<T> resultList = listOfLists.stream() // 转换成Stream<List<T>>
.flatMap(List::stream) // 将每个List<T>转换成Stream<T>并合并成一个流
.collect(Collectors.toMap(T::getId, Function.identity(), (t1, t2) -> t1))
.values().stream() // 根据id去重
.collect(Collectors.toList()); // 将结果收集成一个List<T>
```
以上代码中,`Collectors.toMap()`方法用于将`List<T>`中的对象根据`id`属性作为键,对象本身作为值,这样就可以根据`id`属性进行去重。`Function.identity()`方法返回一个函数,用于将对象本身作为值。`(t1, t2) -> t1`表示当键冲突时选择保留`t1`,即保留第一个对象。最后,使用`values().stream()`方法将去重后的值转换成一个`Stream<T>`,并使用`Collectors.toList()`方法将结果收集成一个`List<T>`。
阅读全文