为了进行以下代码类型检查,我需要做什么?问题在于 s -> s[0]
,在哪里 s
推断为泛型类型 T
而不是 String[]
.
List<String[]> a = Arrays.asList("a.b","c.b")
.stream()
.map(s->s.split("\\."))
.collect(Collectors.toList());
Map<String,List<String>> b = a.stream()
.collect(Collectors.groupingBy(s -> s[0]));
预期的结果应该是 Map
这样地:
{a: ["a.b"],
c: ["c.b"]}
1条答案
按热度按时间n53p2ov01#
问题在于s->s[0],其中s被推断为泛型类型t而不是字符串[]。
其实这不是问题所在。
s
正确推断为String[]
. 然而,产生
Map<String,List<String[]>>
,不是Map<String,List<String>>
. 这就是问题所在。如果你想加入
String
是的String
阵列到单个String
,则需要额外的Map步骤。例如:
输出: