gpt4 book ai didi

java - 如何创建具有映射值的 map ?

转载 作者:行者123 更新时间:2023-12-03 22:59:49 25 4
gpt4 key购买 nike

假设我有一组字符串和一个散列函数(或任何单边函数)和一个测试函数。我想使用 Java 8 流创建一个从输入字符串到其哈希值的映射,该映射通过测试函数。我的问题是如何在 Collectors.toMap() 中编写 keyMapper

伪代码:

Map<String, String> result = inputStrings.stream()
.map(str -> hashFunc(str))
.filter(hash -> hash.startsWith("00"))
.collect(Collectors.toMap(hash -> ???, // the original input string is lost
Function::identity));

在其他函数式编程语言中,我可以使用过滤后的哈希流压缩输入流,但 Java 8 没有zip。此外,在 map() 中,我可以返回输入字符串和哈希值对,以便将输入传递给收集器。但是 Java 8 也没有对或元组。

看来旧的for循环是最简洁的解决方案。

最佳答案

你是对的,没有 lambda 在那里工作。有几个替代选项,但我会使用的选项是:

Map<String, String> result = inputStrings.stream()
.map(str -> new AbstractMap.SimpleImmutableEntry<>(str, hashFunc(str)))
.filter(entry -> entry.getValue().startsWith("00"))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));

(如果我没有收集到 Map,我会创建适合用例的自定义元组类型,而不是使用 Map.Entry,但这里Map.Entry 是一个足够的类型。)

关于java - 如何创建具有映射值的 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34781549/

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