hbr*_*rls 3 java group-by java-8 java-stream
原始数据是这样的:
[
{ 'k1': 'gbv1', 'k2': 'v2' },
{ 'k1': 'gbv1', 'k2': 'v4' },
]
Run Code Online (Sandbox Code Playgroud)
所需数据如下:
{
'gbv1': { 'v2': true, 'v4': true },
}
Run Code Online (Sandbox Code Playgroud)
即分组k1,然后选择值k2。
我目前拥有的:
examples.stream().collect(
Collectors.groupingBy(Example::getK1,
Collectors.mapping(Example::getK2,
Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)
它返回一个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)));
Run Code Online (Sandbox Code Playgroud)
这是假设两者getK1()并getK2()返回String。
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |