stream流根据条件分组
时间: 2023-06-22 08:28:31 浏览: 62
您可以使用Java 8中的流(Stream) API,结合Collectors.groupingBy()方法来根据条件对流进行分组。该方法将流中的元素按照指定的条件进行分组,返回一个Map对象,其中键为分组的条件,值为分组后的元素列表。以下是一个示例代码:
```java
List<Person> persons = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 25),
new Person("Charlie", 30),
new Person("David", 30),
new Person("Ella", 25)
);
Map<Integer, List<Person>> personsByAge = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(personsByAge);
```
该示例代码中,我们定义了一个Person类,其中包含姓名和年龄两个属性。我们使用Stream将Person对象列表转换为流,并使用Collectors.groupingBy()方法来按照年龄对Person对象进行分组。输出结果为:
```
{20=[Person{name='Alice', age=20}],
25=[Person{name='Bob', age=25}, Person{name='Ella', age=25}],
30=[Person{name='Charlie', age=30}, Person{name='David', age=30}]}
```
可以看到,按照年龄分组后,年龄为20、25、30的Person对象分别被分到了不同的列表中。
阅读全文