如何使用 java 流按对象属性的属性进行分组?...两层深?

  • 本文关键字:属性 两层 java 何使用 对象 java
  • 更新时间 :
  • 英文 :


例如,考虑以下两个对象:

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()));

最新更新