Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么赢了';我的ArrayList排序是否带有比较器?_Java_Sorting_Arraylist - Fatal编程技术网

Java 为什么赢了';我的ArrayList排序是否带有比较器?

Java 为什么赢了';我的ArrayList排序是否带有比较器?,java,sorting,arraylist,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);

这是我的密码

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);
    }
ArrayList list=new ArrayList();
列表。添加(“Emily”);
列表。添加(“Gary”);
列表。添加(“Harry”);
列表。添加(“Tom”);
比较名称;
name=(字符串e1,字符串e2)->e2.compareTo(e1);
集合。排序(列表、名称);
for(字符串用户:列表){
System.out.println(用户);
}

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

您正在反转
e2
e1
的位置,因此您的输出是反向的(从Z到A),如果您想按字母顺序排序(从A到Z),您可以执行以下操作:

e1.compareTo(e2);
但由于String类是可比较的,您不必制作自己的比较器来按字母顺序对其排序,您只需调用sort,它就会按字母顺序(字符串的自然顺序)排序

所以你可以做:

Collections.sort(yourListHere);

当我运行你的代码时,它被排序了。使用比较器。是什么让你认为它没有排序?另外,对于像
String
这样具有自然排序的类型,你不需要编写自己的比较器,只需使用
comparator.reverseOrder()
,就可以得到同样的效果。