介绍一下Collectors.toMap
时间: 2023-10-14 18:25:46 浏览: 54
浅谈Java之Map 按值排序 (Map sort by value)
Collectors.toMap是Java 8中Collectors类中的一个静态方法,用于将一个Stream流中的元素映射为一个Map对象。它的方法签名如下:
```java
public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper)
```
其中,参数keyMapper和valueMapper分别是将元素T映射为Map中的键和值的函数。toMap方法返回一个Collector对象,可以通过Stream流的collect方法来将流中的元素收集到Map对象中。
需要注意的是,如果Stream流中存在重复的键,toMap方法会抛出IllegalStateException异常。为了避免这种情况,我们可以通过toMap方法的重载版本,为其提供一个合适的合并函数。
下面是一个使用Collectors.toMap方法的示例代码:
```java
List<Person> persons = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 35)
);
Map<String, Integer> nameToAgeMap = persons.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
System.out.println(nameToAgeMap);
// 输出:{Alice=25, Bob=30, Charlie=35}
```
上面的代码中,我们将一个Person对象的List转换为一个Map,其中Person对象的name属性作为Map的键,age属性作为Map的值。最终输出的结果为:{Alice=25, Bob=30, Charlie=35}。
阅读全文