Java8 stream toMap使用
时间: 2023-05-17 20:06:18 浏览: 131
Stream管道流Map操作.pdf
Java 8中的Stream API提供了一种新的方法来处理集合数据。使用Stream API,可以方便地对集合数据进行过滤、转换和聚合操作。
Stream API提供的toMap方法可以将一个流转换为Map。toMap接受两个函数,一个函数用于将流中的元素转换为键,另一个函数用于将流中的元素转换为值。
例如,如果有一个Person类,它有姓名和年龄两个属性,如下所示:
```
public class Person {
private String name;
private int age;
// 省略构造函数和getter、setter方法
}
```
现在有一个Person的列表,可以使用Stream API和toMap方法将其转换为Map,其中键是人的姓名,值是Person对象:
```
List<Person> people = Arrays.asList(new Person("Alice", 20), new Person("Bob", 30));
Map<String, Person> map = people.stream().collect(Collectors.toMap(Person::getName, p -> p));
```
这样,就可以使用人的姓名来查找Person对象了:
```
Person alice = map.get("Alice");
```
如果流中的元素有重复的键,toMap方法会抛出IllegalStateException异常。可以使用toMap的重载版本来解决这个问题,该版本接受三个参数:键转换函数、值转换函数和合并函数。合并函数用于处理重复的键。
例如,假设有两个Person对象都有名字"Alice",可以使
阅读全文