Tôi có một danh sách các đối tượng như thế này:Java 8 bản đồ của danh sách dòng
[
{value: 1, tag: a},
{value: 2, tag: a},
{value: 3, tag: b},
{value: 4, tag: b},
{value: 5, tag: c},
]
nơi mọi đối tượng của nó là một thể hiện của một lớp Entry
, trong đó có tag
và value
như tài sản. Tôi muốn nhóm chúng theo cách này:
{
a: [1, 2],
b: [3, 4],
c: [5],
}
Đây là những gì tôi đã thực hiện cho đến nay:
List<Entry> entries = <read from a file>
Map<String, List<Entry>> map = entries.stream()
.collect(Collectors.groupingBy(Entry::getTag, LinkedHashMap::new, toList()));
Và đây là kết quả của tôi (không phải những gì tôi muốn):
{
a: [{value: 1, tag: a}, {value: 2, tag: a}],
b: [{value: 3, tag: b}, {value: 4, tag: b}],
c: [{value: 5, tag: c}],
}
Nói cách khác, tôi muốn danh sách các chuỗi dưới dạng giá trị của ánh xạ mới của tôi (Map<String, List<String>>
) và không phải danh sách các đối tượng (Map<String, List<Entry>>
). Làm thế nào tôi có thể đạt được điều này với Java 8 tính năng mới thú vị?
cảm ơn bạn :) nó làm việc – Oneiros