gpt4 book ai didi

Java 8 根据条件从 map 中获取列表

转载 作者:行者123 更新时间:2023-11-30 10:10:16 25 4
gpt4 key购买 nike

我有一个 Item类:

public class Item {
String name;
double price;
// Getters & Setters
}

现在我有一张 map Map<String, List<Item>> map;该映射包含项目的名称和具有相同名称的相应项目列表。

现在我想找出符合过滤条件的所有项目列表。

这是我的过滤器 List<String> filter基本上它包含我需要从 map 中过滤的所有名称列表,并将所有选定的项目作为最终列表。

List<Item> output = new ArrayList<>();
filter.forEach(item -> {
List<Item> list = map.get(item);
if (list != null) {
output .addAll(list);
}
});

这里我使用的是 Lambda 表达式,现在有没有办法使用 Lamda 或方法引用进一步简化这段代码?

最佳答案

我会流式传输过滤器列表,将其平面映射到列表中的值,然后将它们收集为一个单行:

List<Item> result = 
filter.stream()
.flatMap(f -> map.getOrDefault(f, Collections.emptyList).stream())
.collect(Collectors.toList());

关于Java 8 根据条件从 map 中获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52882780/

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