原始数据如下:
[
{ '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而且很容易做这样的工作,因为我觉得它很有活力。
答案 0 :(得分:4)
使用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
。