Collectors.toMap()值为数组类型
时间: 2024-09-09 22:11:56 浏览: 52
Java中的`java.util.stream.Collectors.toMap()`方法有什么作用
`Collectors.toMap()` 是 Java Stream API 中的一个收集器,它可以将流中的元素累积到一个 Map 中。如果你的流元素值为数组类型,你仍然可以使用 `Collectors.toMap()`,但是需要提供相应的键提取函数和值提取函数来正确处理数组。
这里是一个简化的例子来说明如何使用 `Collectors.toMap()` 来处理流中元素为数组的情况:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class ToMapExample {
public static void main(String[] args) {
// 假设我们有一个 Person 对象的列表,其中 Person 有一个 String 类型的 name 和一个 Integer 类型的 age 属性
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 20),
new Person("Charlie", 30)
);
// 使用 Collectors.toMap() 创建一个 Map,其中键是人的名字(name),值是人的年龄(age)
Map<String, Integer> nameToAgeMap = people.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
// 打印结果
System.out.println(nameToAgeMap);
}
static class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
}
}
```
在上面的代码中,`Person::getName` 是键提取函数,它从 `Person` 对象中提取名字作为键,而 `Person::getAge` 是值提取函数,它提取年龄作为值。这样,你就可以创建一个以人名(name)为键,以年龄(age)为值的 `Map`。
阅读全文