Nil*_*pal 2 java lambda java-8 java-stream
问题:通过lambda表达式解决以下问题.给定一个字符串列表,创建一个地图
Key=Integer(string.length)
value=List
Run Code Online (Sandbox Code Playgroud)
如果两个字符串与长度匹配,则创建所有此类匹配字符串长度的列表.
我不知道如何为流中所有匹配的字符串长度创建列表!我尝试了以下方式,这给了我重复键的例外,这很明显.
private static void changeToMap(List<String> listString)
{
Map<Integer, String> map=listString.stream().collect(Collectors.toMap(x->x.toString().length(),x->x));
System.out.println(map);
}
Run Code Online (Sandbox Code Playgroud)
这正是groupingBy收藏家设计的目的:
Map<Integer, List<String>> map =
listString.stream().collect(Collectors.groupingBy(String::length));
Run Code Online (Sandbox Code Playgroud)
请注意,BTW,您的代码定义为map Map<Integer, String>,而根据问题的描述,它应该定义为Map<Integer, List<String>>,如上面的代码片段所定义的那样.