Java Lambda表达式创建一个以整数为键、列表为值的映射

Java Lambda表达式创建一个以整数为键、列表为值的映射,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,问题:通过lambda表达式解决以下问题。给定一个字符串列表,创建一个映射,其中 Key=Integer(string.length) value=List 如果两个字符串与长度匹配,请创建所有匹配长度字符串的列表 我不知道如何为流中的所有匹配字符串长度创建列表!!我尝试了下面的方法,这给了我重复键的例外,这是显而易见的 private static void changeToMap(List<String> listString) { Map<Integer, St

问题:通过lambda表达式解决以下问题。给定一个字符串列表,创建一个映射,其中

Key=Integer(string.length)
value=List
如果两个字符串与长度匹配,请创建所有匹配长度字符串的列表

我不知道如何为流中的所有匹配字符串长度创建列表!!我尝试了下面的方法,这给了我重复键的例外,这是显而易见的

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);        
}
private static void changeToMap(列表列表字符串)
{
Map Map=listString.stream().collect(Collectors.toMap(x->x.toString().length(),x->x));
系统输出打印项次(map);
}

这正是收集器的设计目的:

Map<Integer, List<String>> map = 
    listString.stream().collect(Collectors.groupingBy(String::length));
Map=
listString.stream().collect(Collectors.groupingBy(String::length));

请注意,顺便说一句,您的代码将map定义为
map
,而根据问题的描述,它应该定义为
map
,正如上面的代码片段所定义的那样。

嘿,谢谢!!这就是我所说的!!:)是的,我没有按照要求声明map,因为我可以实现列表,所以声明是这样的!!