gpt4 book ai didi

java - 在 Java 中使用 Collectors.toMap 时,如何跳过向新 map 添加条目?

转载 作者:行者123 更新时间:2023-11-30 08:34:50 28 4
gpt4 key购买 nike

这是我的代码:

HashMap<String, List<Foo.Builder>> strFooMap = new HashMap<>();
// add stuff to strFooMap and do other things
return new HashMap<>(strFooMap.entrySet()
.stream()
.collect(Collectors.toMap(Entry::getKey,
entry -> entry
.getValue()
.stream()
.filter(builder -> {
// do some conditional stuff to filter
})
.map(builder -> {
return builder.build();
})
.collect(Collectors.toList())
)
)
);

所以有时,在完成 filter 之后,我的所有项目 List<Foo.Builder>将被过滤掉。然后在我的 final 中 HashMap ,我有一个这样的条目:{"someStr" -> []} .我想删除值为空列表的键值对。我该怎么做呢?是否可以在 .stream().collect(Collectors.toMap(...)) 中执行此操作?代码?谢谢!

最佳答案

解决方案之一是在收集结果进行映射之前移动值(value)转换。它使您可以过滤掉空值

 List<Foo> transformValue(List<Foo.Builder> value) {
//original value transformation logic
}

<K,V> Entry<K,V> pair(K key, V value){
return new AbstractMap.SimpleEntry<>(key, value);
}

strFooMap.entrySet().stream()
.map(entry -> pair(entry.getKey(), transformValue(entry.getValue()))
.filter(entry -> !entry.getValue().isEmpty())
.collect(toMap(Entry::getKey, Entry::getValue));

关于java - 在 Java 中使用 Collectors.toMap 时,如何跳过向新 map 添加条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38598907/

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