list Collectors.toMap
时间: 2023-10-13 14:02:01 浏览: 103
Java_Collection_List-Set-Map.zip_list set map
`Collectors.toMap` 是 Java 8+ 中的一个集合收集器(Collector),用于将流(Stream)中的元素收集到一个 Map 中。它接受两个参数:一个函数用于提取键(key),另一个函数用于提取值(value)。
以下是 `Collectors.toMap` 的方法签名:
```java
public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(
Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper
)
```
其中:
- `T` 是流中的元素类型。
- `K` 是要作为键的类型。
- `U` 是要作为值的类型。
- `keyMapper` 是一个函数,用于从流中的元素中提取键。
- `valueMapper` 是一个函数,用于从流中的元素中提取值。
以下是一个简单的示例,展示如何使用 `Collectors.toMap` 将一个列表转换为 Map:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange");
Map<String, Integer> fruitLengths = fruits.stream()
.collect(Collectors.toMap(
fruit -> fruit,
fruit -> fruit.length()
));
System.out.println(fruitLengths);
}
}
```
上述示例将字符串列表中的每个水果作为键,将其长度作为值,最终生成一个包含水果和其长度的 Map。输出结果为 `{apple=5, orange=6, banana=6}`。
请注意,`Collectors.toMap` 还有其他重载方法,可用于处理键冲突、指定 Map 实现类等情况。您可以根据具体需求选择适合的重载方法。
阅读全文