У меня есть список объектов, как это:Java 8 отображение списка потока
[
{value: 1, tag: a},
{value: 2, tag: a},
{value: 3, tag: b},
{value: 4, tag: b},
{value: 5, tag: c},
]
, где каждый объект этого является экземпляром класса Entry
, который имеет tag
и value
как свойства. Я хочу, чтобы сгруппировать их следующим образом:
{
a: [1, 2],
b: [3, 4],
c: [5],
}
Это то, что я сделал до сих пор:
List<Entry> entries = <read from a file>
Map<String, List<Entry>> map = entries.stream()
.collect(Collectors.groupingBy(Entry::getTag, LinkedHashMap::new, toList()));
И это мой результат (а не то, что я хотел):
{
a: [{value: 1, tag: a}, {value: 2, tag: a}],
b: [{value: 3, tag: b}, {value: 4, tag: b}],
c: [{value: 5, tag: c}],
}
Другими словами, мне нужен список строк в качестве значений моего нового сопоставления (Map<String, List<String>>
), а не список объектов (Map<String, List<Entry>>
). Как я могу достичь этого с помощью Java 8 новых интересных функций?
спасибо :) она работала – Oneiros