У меня есть структура вроде этого:Преобразование карты <Long, Список <Foo>> к списку <Foo>
Map<Long, List<Foo>>
где класс Foo
предоставляет метод:
Class Foo {
public List<Bar> getBars();
public void setBars(List<Bar> bars);
}
Теперь я хочу, чтобы преобразовать эту карту в List
параметризован с классом Foo
, где каждый элемент в этом списке - это Foo
экземпляр с агрегированными списками баров для заданного длинного значения. Например с картой:
{1: [Foo1, Foo2],
2: [Foo3]}
где
Foo1.bars = [Bar1, Bar2]
Foo2.bars = [Bar3]
Foo3.bars = [Bar4, Bar5]
Я хочу, чтобы получить в результате:
[FooA, FooB]
где
FooA.bars = [Bar1, Bar2, Bar3]
FooB.bars = [Bar4, Bar5]
Что бы наиболее элегантное решение для этого в Java 8? Некоторые из экземпляров Foo
могут быть использованы повторно, если необходимо, поскольку они больше не используются после этой операции.
Так Что проблема? – SacJn
@PhilippSander Я пытаюсь отобразить записи базы данных из внутреннего соединения с одним отношением к моему объекту домена. – slakomy
@PhilippSander попробовал обычное решение Java 7: я взял значения с карты. Затем перебирайте каждый список и каждый список перебирает его элементы для создания агрегированного объекта, но мне не нравится это решение. Я думал, можно ли с потоками. –
slakomy