为什么用比较器赢得我的ArrayList排序?

时间:2017-12-27 16:07:34

标签: java sorting arraylist

这是我的代码

ArrayList<String> list = new ArrayList<>();
    list.add("Emily");
    list.add("Gary");
    list.add("Harry");
    list.add("Tom");

    Comparator<String> name;
    name = (String e1, String e2) -> e2.compareTo(e1);

    Collections.sort(list, name);

    for(String user: list){
        System.out.println(user);
    }

我想使用比较器按字母顺序对列表中的名称进行排序,但是当我打印出已排序的列表时,它不会被排序。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你正在翻转e2e1的位置,所以你的输出是反向的(从Z到A),如果你想按字母顺序排序(从A到Z)你会这样做:

e1.compareTo(e2);

但是因为String类是Comparable,所以你不必让你自己的Comparator按字母顺序排序,你可以调用sort,它将按字母顺序(字符串的自然顺序)顺序排序。

所以你可以这样做:

Collections.sort(yourListHere);