使用Java 8流API按多个属性对对象进行分组

haint504

鉴于我们有银行清单,每个银行都有多个办事处,

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["London"] == ["Mizuho", "Goldman"]
Map["New York"] == ["Mizuho"]
Map["Toronto"] == ["Goldman"]

如何使用Java 8 API达到该结果?使用Java8之前的版本很容易,但是很冗长。谢谢。

JB Nizet
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);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Java 8按类型列表的对象属性对对象列表进行分组:JAVA

Java-按属性对对象进行分组和排序

使用流按多个属性分组和排序:Java 8

如何计算Java8流中按属性分组的对象分组中的多个和?

如何使用Java 8流按原始int成员对对象的ArrayList进行排序?

Java 8流按多个属性和总和分组

如何使用Java 8流对对象进行排序

使用 d3.groups 按多个键对对象数组进行分组

Java按对象列表中的值对对象进行分组

使用流收集器对对象进行分组

使用Lodash通过多个属性对对象数组进行分组

使用下划线groupby通过多个属性对对象数组进行分组

按字段对对象列表进行分组并在其中一个字段中应用二元函数以使用流 java 8 在一行代码中按总和减少它

根据Java中的属性对对象列表进行分组

使用Java中的流对对象数组进行分组并计算平均值

使用lodash通过多个键对对象进行分组

按Java 8流API分组

如何使用lodash对对象数组中的属性进行分组?

在Java中按属性值对对象ArrayList进行排序

使用 lodash 按嵌套属性对对象数组进行排序

使用Stream API在列表中对对象进行分组

Java 8流按包含字符串列表的对象进行分组

Java排序:按属性对对象数组进行排序,不允许使用Comparable对象

对对象列表进行分组并使用Java集合进行计数

使用多个日期属性对对象数组进行排序

使用Java 8根据对象的可为空的ArrayList属性对对象列表进行排序

在java中使用lambda对对象列表进行分组

按对象分组-Java流

按属性对对象列表进行分组,分为多个列表。