java - 如何使用 java-streams 从列表创建 map ?

标签 java java-8 java-stream

我想用 java8 创建一个列表的映射。

class Person {
    String name;
    int age;
    //etc
}

List<Person> persons;

Map<String, Person> personsByName = persons.stream().collect(
         Collectors.toMap(Person::getName, Functions.identify());

结果:类型 Person 没有定义适用于此处的 getName(T)

为什么? Person::getName 有什么问题?

最佳答案

如果你在 Person 中有一个 getName() 方法,这应该没问题:

Map<String, Person> personsByName = persons.stream().collect(
                 Collectors.toMap(Person::getName, Function.identity()));

请注意,我还将 Functions.identify()(不存在)更改为 Function.identity()。我会假设这是你的错字。

关于java - 如何使用 java-streams 从列表创建 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30350610/

相关文章:

java - 如何将包从一个 Activity 传递到放置在另一个 Activity 中的 fragment ?

java - 无法初始化类 java.awt.Rectangle

java - 磁盘读取操作执行速度非常慢 | Java流

java - EnumSet.copyOf 空集合抛出 IllegalArgumentException

java - 使用 Java 8 在文本文件中搜索字符串

functional-programming - 使用 Stream API 的一种看似愚蠢的方式导致需要 Predicate<Boolean>

java - 没有内置方法的十进制到二进制程序

java - Broadleaf Commerce 中的特定客户优惠

java - 在流中对 LongAdder 进行排序

java:不兼容的类型:推理变量 T 具有不兼容的边界等式约束:下限:java.util.List<>