java8stream流根据条件筛选之后生成map
时间: 2024-11-22 22:45:49 浏览: 4
Java8新特性Stream流实例详解
5星 · 资源好评率100%
在Java 8的Stream API中,你可以使用`filter()`方法来根据条件筛选元素,然后结合`collect()`方法将结果转换为Map。假设你有一个List,比如Person列表,你想根据某个属性(如年龄)过滤出特定年龄段的人,并存储他们的姓名作为键,年龄作为值,可以这样做:
```java
import java.util.*;
import java.util.stream.Collectors;
class Person {
String name;
int age;
// ...省略构造函数和getter/setter
}
List<Person> persons = ...; // 初始化你的Person列表
Map<Integer, List<String>> ageToNames = persons.stream()
.filter(person -> person.getAge() >= 18 && person.getAge() <= 30) // 筛选条件
.collect(Collectors.groupingBy(Person::getAge)); // 根据age分组,每个age映射到一个名字列表
// 结果是一个Map<Integer, List<String>>, 键是年龄,值是对应年龄段的人员名称列表
```
在这个例子中,`groupingBy()`方法用于收集每个符合条件的Person的name,并把它们放在一个按照年龄分桶的Map中。
阅读全文