gpt4 book ai didi

java - 收集 Map.Entry 第一个值到 map 中

转载 作者:行者123 更新时间:2023-12-01 23:46:43 27 4
gpt4 key购买 nike

我有以下 map :

private static Map<String, String[]> createMap(){
Map<String, String[]> map = new HashMap<>();
map.put("A", new String[]{null});
map.put("B", new String[]{"Banana"});
map.put("C", new String[]{""});
map.put("D", new String[]{"Duck"});
return map;
}

我想把这张 map 转换成Map<String, String>

需要的输出:

Key :B Value : Banana

Key :D Value : Duck

我想使用Java 8 Stream APIs来做到这一点我尝试过的解决方案之一是

final Map<String, String[]> collect = createMap().entrySet().stream()
.filter(e -> e.getValue()[0] != null && !"".equals(e.getValue()[0]))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

collect.forEach((key, value) -> System.out.println("Key :" + key + " Value :" + Arrays.toString(value)));

但这给了我 Map<String, String[]>输出是

Key :B Value :[Banana]

Key :D Value :[Duck]

如何告诉 Collector 仅从 Map.Entry 中提取第一个值值(value)观?

最佳答案

你可以这样做:

map.entrySet().stream()
.filter(entry -> Stream.of(entry.getValue()[0])
.anyMatch(s -> s != null && !s.isEmpty()))
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue()[0]))

通过您的代码:

Map<String, String> collect = map.entrySet().stream()
.filter(e -> e.getValue()[0] != null && !e.getValue()[0].isEmpty())
.collect(Collectors.toMap(Map.Entry::getKey, entry->entry.getValue()[0]));

关于java - 收集 Map.Entry 第一个值到 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62296195/

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