gpt4 book ai didi

java - 如何使用 Streams 将字符串列表转换为 Map

转载 作者:行者123 更新时间:2023-12-01 22:57:18 25 4
gpt4 key购买 nike

我必须将列表 List<String> 转换为映射 Map<String, Float>

映射 必须是列表 中的字符串,每个 必须是 0 (零)对于所有

我如何转换它?

我试过:

List<String> list = List.of("banana", "apple", "tree", "car");

Map<String, Float> map = list.stream()
.distinct()
.collect(Collectors.toMap(String::toString, 0f));

最佳答案

如果您需要将每个0 相关联,toMap() 的第二个参数需要是一个函数 返回 0,但不是 0 的值:

Map<String, Float> map = list.stream()
.collect(Collectors.toMap(
Function.identity(), // extracting a key
str -> 0f, // extracting a value
(left, right) -> 0f // resolving duplicates
));

此外,无需使用 distinct()。在底层,它会创建一个 LinkedHashSet 来消除重复项,以防如果大多数流元素是唯一的并且数据集很大,它可能会显着增加内存消耗。

相反,我们可以在 map 中处理它们。为此,我们需要添加第三个参数 mergeFunction

并且不需要在已经是字符串的流元素上调用 toString() 方法来提取类型为 Stringkey .在这种情况下,我们可以使用 Function.identity() 来表示不需要转换。

关于java - 如何使用 Streams 将字符串列表转换为 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72744797/

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