[英]How to groupby then toList the toMap using java8 stream
原始數據如下:
[
{ 'k1': 'gbv1', 'k2': 'v2' },
{ 'k1': 'gbv1', 'k2': 'v4' },
]
所需數據如下:
{
'gbv1': { 'v2': true, 'v4': true },
}
即按k1
分組,然后選擇k2
值。
我目前擁有的:
examples.stream().collect(
Collectors.groupingBy(Example::getK1,
Collectors.mapping(Example::getK2,
Collectors.toList())));
它返回k2
的值列表而不是映射;
我大部分時間都使用javascript而且很容易做這樣的工作,因為我認為這是動態的。
使用toMap
而不是mapping
:
Map<String,Map<String,Boolean>> map =
examples.stream()
.collect(Collectors.groupingBy(Example::getK1,
Collectors.toMap(Example::getK2,v->true,(v1,v2)->v1)));
這假設getK1()
和getK2()
返回一個String
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.