【发布时间】:2017-12-06 05:43:36
【问题描述】:
我有一个 EdmPortfolio 类型,它有 id (int)、name (String) 和标签,它是一个地图作为它的成员。
EdmPortfolio 的 id 为 1,名称为 Portfolio1 和 Map 可以具有以下值, 分析师,约翰 美国地区
我有一个列表,最后我想要一个地图,其中包含来自所有投资组合的所有地图值。另一个 EdmPortfolio 的 id 可能为 2,名称为 Portfolio2 和 Map with values Analyst, Smith 地区,英国
我想要一个包含值的组合地图 地区“美国”、“英国” 分析师“约翰”、“史密斯”
分析员和地区是地图的关键。 它结合了两个地图。我有以下代码,但我有点迷茫
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)));
我得到的非静态方法不能从静态上下文中引用。我如何做到这一点?
感谢您的宝贵时间
【问题讨论】:
-
您在哪一行收到该错误?它甚至是您问题中的代码中的一行吗?
标签: filter java-8 java-stream