小编Tom*_*ell的帖子

Java 8 Collections.sort - 简单的拼写错误

基本上我有两个比较器(Comparator1和Comparator2),实现略有不同.两者都应按行的名称长度的降序对列表进行排序.

Comparator2似乎不适用于java7/java8.Comparator1始终有效.两者都适用于java 1.6实现,或者如果我设置-Djava.util.Arrays.useLegacyMergeSort = true.如果Comparator2中存在问题,则java应该抛出IllegalArgumentException,但不会抛出异常.

这在java文档中声明为"java.util.Arrays.sort使用的排序算法和java.util.Collections.sort(间接)使用的排序算法已被替换.如果新的排序实现检测到Comparable,则会抛出IllegalArgumentException违反可比较合约"

这是JRE中的错误还是Comparator2有问题?

public class Main {

public static void main(String[] args) {
    Row row1 = new Row("AAAA");
    Row row2 = new Row("BBB");
    Row row3 = new Row("CC");
    Row row4 = new Row("D");

    List<Row> list1 = new ArrayList<Row>();
    list1.add(row2);
    list1.add(row3);
    list1.add(row1);
    list1.add(row4);

    System.out.println("Before sorting:");
    System.out.println("");

    print(list1);

    Collections.sort(list1, new Comparator2());

    System.out.println("After sorting with comparator2:");
    System.out.println("");

    print(list1);

    Collections.sort(list1, new Comparator1());

    System.out.println("After sorting with comparator1:");
    System.out.println("");

    print(list1);

}

private static void print(List<Row> list) {
    for (Row row : list) …
Run Code Online (Sandbox Code Playgroud)

java sorting java-7 java-8

0
推荐指数
1
解决办法
731
查看次数

标签 统计

java ×1

java-7 ×1

java-8 ×1

sorting ×1