#java
#Ява
Вопрос:
Итак, рассмотрим, например, эти два объекта:
class MyObject { Integer Id; MyObjectInner myObjectInner; } class MyObjectInner { Integer Id: String attributeToGroupBy; }
Если бы я хотел сгруппировать список MyObjects по идентификатору, я бы сделал что-то вроде:
Maplt;Integer, Listlt;MyObjectgt;gt; myObjectsPerId = myObjects.stream().collect(Collectors.groupingBy(MyObject::getId));
Но что, если бы мне нужно было сгруппироваться по MyObject::MyObjectInner::AttributeToGroupBy, как бы я это сделал?
Комментарии:
1.
Collectors.groupingBy(o -gt; o.myObjectInner.attributeToGroupBy)
2. Спасибо, что ответили Йоханнесу! Это сработало!
Ответ №1:
Чтобы это сработало, вам нужно будет добавить метод getId() в свой класс MyObject.
class MyObject { Integer Id; MyObjectInner myObjectInner; public MyObject(){} public Integer getId() { return this.Id; } }
Затем вы могли бы создать свою карту с помощью :
Maplt;Object, Listlt;MyObjectgt;gt; myObjectsPerId = myObjects.stream().collect(Collectors.groupingBy(o -gt; o.getId()));