list使用stream流方式根据元素分组 返回一个list
时间: 2023-08-22 08:07:54 浏览: 271
JAVA JDK8 List分组获取第一个元素的方法
可以使用Java8中的Stream流和Collectors工具类来根据元素分组并返回一个List。具体实现可以参考以下代码:
假设我们有一个包含Person对象的List,每个Person对象都有一个age属性,我们要根据age属性来分组并返回一个List,其中每个元素都是一个age相同的Person对象列表。
```java
List<Person> personList = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 25),
new Person("Tom", 20),
new Person("Jerry", 25)
);
List<List<Person>> groupedPersonList = personList.stream()
.collect(Collectors.groupingBy(Person::getAge))
.values()
.stream()
.collect(Collectors.toList());
```
上述代码中,我们首先使用stream()方法将personList转换为一个Stream流。接着使用Collectors.groupingBy()方法来根据Person对象的age属性进行分组,返回一个Map<Integer, List<Person>>,其中key为age,value为age相同的Person对象列表。
接着使用Map.values()方法获取Map中的value集合,即所有分组后的Person对象列表。最后使用Collectors.toList()方法将value集合转换为一个List<List<Person>>,即分组后的List。
注意:上述代码中的Person类需要实现getAge()方法,用于获取age属性。
阅读全文