gpt4 book ai didi

filter - Map 上的流和过滤操作

转载 作者:行者123 更新时间:2023-12-02 09:16:54 24 4
gpt4 key购买 nike

我有一个 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/

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