根据the docs,
thenComparing
默认U扩展比较?超级U比较器然后比较超级T,?扩展U keyExtractor)
返回词典顺序比较器,该比较器具有提取Comparable排序键的函数.
因此,以下代码位的输出应该是"a:1"、"a:12"、"a:4".然而,生成的列表是按大小写排序的.
怎么会?我是不是误解了文档?
(s
-属性只是为了具有初始排序键,以便可以应用thenComparing)
import java.util.*;
public class MyClass {
public static void main(String[] args) {
List<Container> list = new ArrayList<>();
list.add(new Container("a", 4));
list.add(new Container("a", 12));
list.add(new Container("a", 1));
list.sort(Comparator.comparing(Container::getS)
.thenComparing(Container::getX)
);
for (Container c : list) {
System.out.println(c.getS() + " : " + c.getX());
}
}
public static class Container {
private String s;
private Integer x;
public Container(String s, Integer x) {
this.s = s;
this.x = x;
}
public Integer getX() {
return this.x;
}
public String getS() {
return this.s;
}
}
}