首页 > 解决方案 > thenComparing 打破字符串上的子字符串

问题描述

我有一个包含两个字符的字符串列表,想按第一个字符升序和第二个字符降序排序,例如“S1”、“T1”、“T2”应该排序为“S1”、“T2”、“T1” .

看起来很简单:

strings.sort(Comparator.comparing(code -> code.substring(0,1))
        .thenComparing(code -> code.substring(1,2).reversed()));

输入第一部分后

strings.sort(Comparator.comparing(code -> code.substring(0,1))

一切都还好,自动完成告诉我有关子字符串(Intellij)的信息,但是当我添加

.thenComparing(code -> code.substring(1,2).reversed()));

不知何故,Java 不再知道它正在使用字符串并给我错误

Cannot resolve method 'substring' in 'Object'

对于.substring两者的方法调用。

使用 stream().sorted() 时也会发生同样的情况

在此处输入图像描述

标签: java

解决方案


推荐阅读