filter - Map 上的流和过滤操作

标签 filter java-8 java-stream

我有一个 EdmPortfolio 类型,它有 id (int)、name (String) 和标签,它是一个映射作为其成员。

EdmPortfolio 的 ID 为 1,名称为 Portfolio1,Map 可以具有以下值, 分析师约翰 地区,美国

我有一个列表,最后我想要一个 map ,其中包含所有投资组合中的所有 map 值。另一个 EdmPortfolio 的 id 可能为 2,名称为 Portfolio2,并与值(value)分析师 Smith 进行映射 英国地区

我想要一个包含值的组合 map 地区“美国”、“英国” 分析师“约翰”、“史密斯”

分析师和区域是 map 的关键。 它合并了两张 map 。我有以下代码,但我有点迷失

List<Map<Tag,String>> portfolioTagsList = new ArrayList<>();
            for (EdmPortfolio edmPortfolio : edmPortfolioList) {
              Map<Tag,String> portfolioTags =  edmPortfolio.getPortfolioTags().entrySet()
                        .stream()

                        .filter(e -> (e.getValue() != ""|| e.getValue() !=null))
                        .collect(Collectors.toMap(
                                Map.Entry::getKey,
                                Map.Entry::getValue
                        ));


                portfolioTagsList.add(portfolioTags);
            }
            Map<Tag,String> finalTags = portfolioTagsList.stream()
                    .flatMap(m -> m.entrySet().stream())
                    .collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.joining(",",Map.Entry::getValue)));

我收到无法从静态上下文引用非静态方法的消息。我如何实现这一目标?

感谢您的宝贵时间

最佳答案

我会做这样的事情:

Map<Tag,String> finalTags = edmPortfolioList.stream()
.flatMap(edmPortfolio -> edmPortfolio.getPortfolioTags().entrySet().stream())
.filter(e -> (e.getValue() != "" || e.getValue() !=null)) // this seems weird, but just keeping
.collect(Collectors.groupingBy(e -> e.getKey(), 
    Collectors.mapping(ev -> ev.getValue(), 
        Collectors.joining(",")));

顺便说一句:有什么理由将其分成两个流吗?

关于filter - Map 上的流和过滤操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47667565/

相关文章:

java - log4jdbc Java 8 兼容性

Java从列表中删除某些属性重复的条目

javascript - 将 Canvas 图像转换为 toDataURL() 时没有滤镜效果

java - KOTLIN/JAVA 从对象列表中删除对象的一些属性

sql - 从与另一个表具有相同关系的表中获取字段

hibernate - 如何将 Java 8 LocalDateTime 与 JPA 和 Hibernate 一起使用

java - 从 HashMap<Integer, List<Integer>> 获取每个数字的最大出现次数

java - 从 int 转换为 Integer 并排序

php - 如何使用 PHP 和 AJAX 过滤服装尺寸?

r - 按日期和 ID 过滤重复项