例如,考虑以下两个对象:
class MyObject {
Integer Id;
MyObjectInner myObjectInner;
}
class MyObjectInner {
Integer Id:
String attributeToGroupBy;
}
如果我想按Id对MyObjects列表进行分组,我会做一些类似的事情:
Map<Integer, List<MyObject>> myObjectsPerId =
myObjects.stream().collect(Collectors.groupingBy(MyObject::getId));
但是,如果我需要按MyObject::MyObjectInner::AttributeToGroupBy分组,该怎么办?
您需要在MyObject类中添加一个getId((方法才能工作。
class MyObject {
Integer Id;
MyObjectInner myObjectInner;
public MyObject(){}
public Integer getId() { return this.Id; }
}
然后,你可以用创建你的地图
Map<Object, List<MyObject>> myObjectsPerId =
myObjects.stream().collect(Collectors.groupingBy(o -> o.getId()));