Jin*_*won 5 java arrays hashmap java-stream collectors
我有一个由两个字符串组成的数组的数组。
var array = new String[][]{
{"a", "1"},
{"a", "2"},
{"b", "3"},
...
};
Run Code Online (Sandbox Code Playgroud)
如何将上面的数组收集到一个数组中,Map<String, Set<String>>其键是每个数组的第一个元素,值是数组的第二个元素的集合?
这样我就可以得到下面的地图?
// Map<String, Set<String>>
<"a", ["1, "2"]>,
<"b", ["3"]>,
...
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现我可以像这样对每个数组的第一个元素进行分类。
var array = new String[][]{
{"a", "1"},
{"a", "2"},
{"b", "3"},
...
};
Run Code Online (Sandbox Code Playgroud)
你需要一个Collectors.mapping(也不需要String[]在里面指定)
var array = new String[][]{{"a", "1"}, {"a", "2"}, {"b", "3"},};
Map<String, Set<String>> res = Arrays.stream(array).collect(Collectors.groupingBy(
a -> a[0],
Collectors.mapping(a -> a[1], Collectors.toSet())
));
System.out.println(res); // {a=[1, 2], b=[3]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |