Представьте, что у нас есть класс POJO Item
:
class Item {
private String key;
private String $value;
// constructors, getters & setters
}
И в нашем основном классе у нас есть List
, содержащий некоторые из этих предметов. Как я могу сгруппировать все элементы с одинаковым key
с помощью Stream API?
Я обнаружил, что Collectors.groupingBy
- это более или менее то, что я ищу, но он возвращает карту, и мне нужно сохранить порядок элементов List
.
Например, представьте, что список выглядит следующим образом:
List [
Item { key1, value1 },
Item { key2, value2 },
Item { key2, value3 }
]
Я ожидал бы возвращаемое значение, подобное (и только подобное), следующее:
List [
List [
Item { key1, value1 }
],
List [
Item { key2, value2 },
Item { key2, value3 }
]
]
Я не знаю, помогает ли это знать, почему я хочу сделать это (возможно, есть лучший способ), но я хочу в итоге получить список другого объекта, который содержит ключ и список всех элементов с этим ключ:
List [
AnotherObject {
key1,
List [
Item { key1, value1 }
]
},
AnotherObject {
key2,
List [
Item { key2, value2 },
Item { key2, value3 }
]
}
]
Быть другимОбъектом другого класса POJO:
class AnotherObject {
private String key;
private List<Item> $items;
// constructors, getters & setters
}