我有工作场所和存储在每个工作场所的货币金额。我需要将其转换为Map,以便键是货币,而值是 - 所有作业的金额。例如,一个工作场所包含20美元和40欧元,第二个工作场所包含50美元和10欧元。因此,在地图上应该是-70美元和50欧元。如何使用.stream()
?
答案 0 :(得分:0)
我假设您有一些课程Workspace
,看起来有点像这样:
class Workspace {
private List<Job> jobs;
public List<Job> getJobs() {
return jobs;
}
}
class Job {
private String currency;
private int amount;
public String getCurrency() {
return currency;
}
public int getAmount() {
return amount;
}
}
现在您要将List<Workspace>
转换为Map<String,Integer>
。这很简单:
workspaces.stream()
.flatMap(w -> w.getJobs().stream())
.collect(Collectors.groupingBy(Job::getCurrency, Collectors.summingInt(Job::getAmount)));
如果这不是您想要的,您应该编辑并澄清您的问题。