对传递的字符串使用 Comparator.thenComparing
Using Comparator.thenComparing for passed string
我正在使用流尝试创建映射中键的数组列表,首先按值(整数)排序,然后按字母顺序对键排序。我让它们按值排序,但在尝试按字母顺序比较它们时出现错误:
return map.keySet()
.stream()
.sorted(Comparator.comparing( (k1) -> map.get(k1)).thenComparing(String::compareTo)) //ErrorHere
.toArray(String[]::new);
Coc-java 给我一个 The method thenComparing(Comparator<? super Object>) in the type Comparator<Object> is not applicable for the arguments (String::compareTo)
错误。我以前使用过 thenComparing,但是 .sorted 方法看起来像这样:
.sorted(Comparator.comparing(String::length).thenComparing(String::compareTo))
这没有产生任何错误并且运行良好。我假设它可能与 lamda returns?
的内容有关
您可能只需要明确指定类型,例如Comparator.comparing((String k1) -> map.get(k1))
,或Comparator.<String, WhateverTheValueTypeIs>comparing(map::get)
。
我正在使用流尝试创建映射中键的数组列表,首先按值(整数)排序,然后按字母顺序对键排序。我让它们按值排序,但在尝试按字母顺序比较它们时出现错误:
return map.keySet()
.stream()
.sorted(Comparator.comparing( (k1) -> map.get(k1)).thenComparing(String::compareTo)) //ErrorHere
.toArray(String[]::new);
Coc-java 给我一个 The method thenComparing(Comparator<? super Object>) in the type Comparator<Object> is not applicable for the arguments (String::compareTo)
错误。我以前使用过 thenComparing,但是 .sorted 方法看起来像这样:
.sorted(Comparator.comparing(String::length).thenComparing(String::compareTo))
这没有产生任何错误并且运行良好。我假设它可能与 lamda returns?
的内容有关您可能只需要明确指定类型,例如Comparator.comparing((String k1) -> map.get(k1))
,或Comparator.<String, WhateverTheValueTypeIs>comparing(map::get)
。