当前位置: 首页 > 知识库问答 >
问题:

如何生成hashmap或hashtable从列表的类对象使用流映射在java8?

萧萧迟
2023-03-14
class Student {
    int studentId;
    String studentName;
    String studentDept;
    public Student() {}
}

我有这些学生物品清单,

List<Student> studentList;

我想从这些学生列表对象生成哈希图。

HashMap<Integer,String> studentHash;

hashmap包含sudentid和name list键值对。

共有2个答案

夹谷腾
2023-03-14

比如:

studentList.stream().collect(
    Collectors.toMap(Student::getStudentId, Student::getStudentName)
)
邢博涛
2023-03-14

由于您显然需要Map的特定实现,您应该使用方法Collectors.toMap允许提供mapProviier而不是toMap(函数

所以你的代码应该是这样的:

HashMap<Integer,String> studentHash = studentList.stream().collect(
    Collectors.toMap(
        s -> s.studentId, s -> s.studentName,
        (u, v) -> {
            throw new IllegalStateException(
                String.format("Cannot have 2 values (%s, %s) for the same key", u, v)
            );
        }, HashMap::new
    )
);

如果你不关心Map的实现,只需使用toMap(函数

Map<Integer,String> studentHash = studentList.stream().collect(
    Collectors.toMap(s -> s.studentId, s -> s.studentName)
);

 类似资料: