gpt4 book ai didi

java - 如何使用java8中的流映射从类对象列表生成 HashMap 或哈希表?

转载 作者:行者123 更新时间:2023-12-01 16:50:43 25 4
gpt4 key购买 nike

class Student {
int studentId;
String studentName;
String studentDept;
public Student() {}
}

我有这些学生对象列表,

List<Student> studentList;

我想从这些学生列表对象生成 HashMap 。

HashMap<Integer,String> studentHash;

hashmap 包含 sudentid 和名称列表键值对。

最佳答案

因为您显然需要 Map特定实现 ,你应该使用方法 Collectors.toMap 允许提供 mapSupplier而不是toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)因为即使在幕后它仍然会返回 HashMap ,它没有在 javadoc 中明确指定,因此您无法确保它在 Java 的下一个版本中仍然正确。

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

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(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)作为下一个收集器:

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

关于java - 如何使用java8中的流映射从类对象列表生成 HashMap 或哈希表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com