首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java 8根据条件从地图中获取列表

Java 8根据条件从地图中获取列表
EN

Stack Overflow用户
提问于 2018-10-19 05:21:50
回答 1查看 1.4K关注 0票数 2

我有一个Item类:

代码语言:javascript
复制
public class Item {
    String name;
    double price;
    // Getters & Setters
}

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

现在,我想找出符合筛选条件的所有项目列表。

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

代码语言:javascript
复制
List<Item> output = new ArrayList<>();
        filter.forEach(item -> {
            List<Item> list = map.get(item);
            if (list != null) {
                output .addAll(list);
            }
        });

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

EN

回答 1

Stack Overflow用户

发布于 2018-10-19 15:15:05

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

代码语言:javascript
复制
List<Item> result = 
    filter.stream()
          .flatMap(f -> map.getOrDefault(f, Collections.emptyList).stream())
          .collect(Collectors.toList());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52882780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档