对传递的字符串使用 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)