У меня есть следующая коллекция:
Map<String, Map<SomeEnum, Long>> map = ...
Вот примеры данных:
{"Foo": {
SomeEnum.BAR1: 1,
SomeEnum.BAR2: 2,
SomeEnum.BAR3: 3
},
"two": {...}
Поскольку я знаю все перечисления, я хочу преобразовать их в список POJO. Определение объекта следующее:
class SomeClass {
String name;
long bar1Value;
long bar2Value;
long bar3Value;
}
Я пробовал разные решения, например, с отображением внутри отображения:
map.entrySet().stream()
.map(e -> e.getValue().entrySet().stream().map(innerEntry -> {
long bar1 = 0;
long bar2 = 0;
long bar3 = 0;
if(innerEntry.getKey().equals(SomeEnum.BAR1)) bar1 = innerEntry.getValue();
if(innerEntry.getKey().equals(SomeEnum.BAR2)) bar2 = innerEntry.getValue();
if(innerEntry.getKey().equals(SomeEnum.BAR3)) bar3 = innerEntry.getValue();
return new SomeClass(e.getKey(), bar1, bar2, bar3);
}).collect(toList()).collect(toList());
К сожалению, я получаю List<List<SomeClass>>
.
Есть ли другой, более элегантный способ справиться с этим?