java stream流 Collectors.toMap()三个入参的运用详解
时间: 2023-05-23 13:01:57 浏览: 484
Collectors.toMap() 是 Java Stream API 中常用的一个方法,它将 Stream 中的元素映射为 key-value 对,并返回一个 Map 对象。这个方法有三个入参,分别是 key 的映射函数、value 的映射函数和在 key 冲突时的处理函数。
key 的映射函数用于将 Stream 中的元素映射为 key,value 的映射函数用于将元素映射为 value。在 key 冲突时,处理函数会被调用,它接收两个参数,表示冲突的 key 对应的 value,函数需要返回一个新的 value,作为最终的 value。
比如以下代码:
```
List<Person> personList = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Cathy", 35),
new Person("David", 40)
);
Map<String, Integer> nameToAgeMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
System.out.println(nameToAgeMap);
```
这段代码中,我们将一个 Person 对象列表映射为一个以 name 作为 key,以 age 作为 value 的 Map。运行结果如下:
```
{Alice=25, Bob=30, Cathy=35, David=40}
```
其中,key 的映射函数为 Person::getName,value 的映射函数为 Person::getAge,由于没有冲突,因此不需要处理函数。