2017-12-27 446 views
-2

这里是我的代码为什么我的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

当我运行你的代码,将垃圾分类。使用你的比较器。是什么让你觉得它没有排序? – azurefrog

+0

另外,对于像'String'这样的具有自然排序的类型,您不需要自己写比较器,只需使用Comparator.reverseOrder()即可获得相同效果。 – azurefrog

回答

2

你在倒车的e2e1的地方,所以你的输出是反向(从Z到A),如果你想按字母顺序排序(从A到Z),你会怎么做:

e1.compareTo(e2); 

但由于String类是Comparable,你不必让自己的Comparator按字母顺序对它进行排序,你可以调用sort并按字母顺序排序(按字符串顺序)。

所以,你可以这样做:

Collections.sort(yourListHere); 
相关问题