gpt4 book ai didi

java - 将 List 转换为 Map 并过滤空键

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:03 26 4
gpt4 key购买 nike

我想使用 java 8 流将列表转换为 map ,如 Java 8 List<V> into Map<K, V> 的解决方案中所述.但是,我想过滤以删除具有某些键的条目(例如,如果键为空)而不将值转换为键两次。

例如,我可以在收集之前进行过滤,例如

Map<String, Choice> result =
choices.stream().filter((choice) -> choice.getName() != null).collect(Collectors.toMap(Choice::getName,
Function.<Choice>identity());

在我的例子中,获取键的逻辑比简单地获取字段属性更复杂,我想避免先在过滤器中执行逻辑,然后再在 Collectors.toMap 的 keyMapper 函数中执行逻辑

如何使用自定义 keyMapper 函数将列表转换为映射并根据新键过滤某些值?

最佳答案

如果你只想计算一次key,你可以使用流方法map将流转换为元组流,根据键,最后从元组创建 map :

Map<String, Choice> result = choices.stream()
.map(c -> new AbstractMap.SimpleEntry<String, Choice>(c.getName(), c))
.filter(e -> e.getKey() != null)
.collect(toMap(e -> e.getKey(), e -> e.getValue()));

关于java - 将 List 转换为 Map 并过滤空键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23572318/

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