我有一个以字符串为值的地图。我想首先按长度排序,如果字符串的长度相同,我想按字母排序。
我写了那些代码:

String out = outMap.values().stream()
                .sorted(Comparator.comparing(e -> e.length()).thenComparing()...)
                .collect(Collectors.joining());


问题是,当我写thenComparing时,我不能再使用e.length()了。我该如何解决?

编辑:Map<Character, String>。我想对所有字符串进行排序,并在输出中连接一个字符串。

最佳答案

怎么样

String out = outMap.values().stream()
        .sorted(Comparator.comparingInt(String::length)
                          .thenComparing(Comparator.naturalOrder()))
                    //OR  .thenComparing(String.CASE_INSENSITIVE_ORDER))
        .collect(Collectors.joining());

08-27 14:39