【发布时间】:2016-07-26 11:57:07
【问题描述】:
我有一个cats 的列表,我想将cats 与相同的colour 分组并按owner 分组。我如何在 Java 8 中做到这一点?
public class Cat{
private String name;
private Owner owner;
private String color;
public Cat(String name,Owner owner,String color){
this.name=name;
this.owner= owner;
this.color= color;
}
}
public class Owner{
private String name;
public Owner(String name){
this.name= name;
}
}
假设我有以下数据:
Owner owner1= new Owner("John"); Owner owner2= new Owner("Smith");
Owner owner3= new Owner("Scott");
Cat cat1 = new Cat ("Cat1",owner1,"Brown");
Cat cat2 = new Cat ("Cat2",owner2,"Black");
Cat cat3 = new Cat ("Cat3",owner1,"Brown");
Cat cat4 = new Cat ("Cat4",owner3,"White");
List<Cat> catList = new ArrayList<>();
catList.add(cat1);
catList.add(cat2);
catList.add(cat3);
catList.add(cat4);
我期待owner1 的地图有两只猫,owner2 有 1 只,owner3 有 1 只猫。
【问题讨论】:
-
“收集相同颜色的猫”是什么意思。您想按颜色和所有者分组,还是按特定颜色过滤?
-
首先尝试使用普通循环来完成您的任务,这样您就可以看到算法,该算法可以转换为
StreamAPI。看来您必须这样做:stackoverflow.com/a/33254512/4105457