HashMap按值排序后收集键到列表时提示LinkedList构造器错误如何解决
问题原因
- 你错误调用了
Collectors.toList()方法:该方法本身没有入参,你传入的4个参数实际是Collectors.toMap()的方法签名,方法不匹配导致JVM尝试按你传入的参数找对应构造器时抛出无法解析LinkedList构造器的错误。
正确实现代码
你要的是按值排序后收集键到LinkedList,正确写法如下:
return myMap.entrySet().stream() .sorted(Map.Entry.comparingByValue()) .map(Map.Entry::getKey) .collect(Collectors.toCollection(LinkedList::new));
代码说明
- 先调用
sorted(Map.Entry.comparingByValue())完成Map Entry按值排序的逻辑 - 调用
map(Map.Entry::getKey)将流中的Entry元素映射为对应的键,此时流中仅保留排序后的键 - 调用
Collectors.toCollection(LinkedList::new)指定将结果收集为LinkedList类型的列表,如果你不需要强制指定列表实现为LinkedList,直接用无参的Collectors.toList()即可。
内容的提问来源于stack exchange,提问作者eaRobust
相关产品推荐
相关产品推荐

