鉴于我们有一个银行列表,每个银行都有多个办公室,
public class Bank {
private String name;
private List<String> branches;
public String getName(){
return name;
}
public List<String> getBranches(){
return branches;
}
}
例如:
Bank "Mizuho": branches=["London", "New York"]
Bank "Goldman": branches = ["London", "Toronto"]
给定银行列表,我将获得每个城市的银行代表 map 。在上面的例子中,我需要一个结果
Map["London"] == ["Mizuho", "Goldman"]
Map["New York"] == ["Mizuho"]
Map["Toronto"] == ["Goldman"]
如何使用 Java 8 API 实现该结果?使用 Java8 之前的版本很容易,但很冗长。
谢谢你。
最佳答案
Map<String, Set<Bank>> result = new HashMap<>();
for (Bank bank : banks) {
for (String branch : bank.getBranches()) {
result.computeIfAbsent(branch, b -> new HashSet<Bank>()).add(bank);
}
}
关于java - 使用 Java 8 流 API 按多个属性对对象进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44171555/