如何在Java中按降序sortingArrayList <Long>?

如何在Java中按降序排列ArrayList?

以下是您的list的一种方法:

 Collections.sort(list); Collections.reverse(list); 

或者你可以实现自己的Comparator来sorting并消除相反的步骤:

 Collections.sort(list, new Comparator<Long>() { public int compare(Long o1, Long o2) { return o2.compareTo(o1); } }); 

甚至更简单地使用Collections.reverseOrder()因为你只是倒过来:

 Collections.sort(list, Collections.reverseOrder()); 
 Comparator<Long> comparator = Collections.reverseOrder(); Collections.sort(arrayList, comparator); 

您可以使用下面给出的以下代码;

 Collections.sort(list, Collections.reverseOrder()); 

或者如果你打算使用自定义比较器,你可以使用下面给出的

 Collections.sort(list, Collections.reverseOrder(new CustomComparator()); 

其中CustomComparator是一个比较类,用于比较列表中存在的对象。

正常sorting并使用Collections.reverse();

Java 8

在java 8中做这件事情是非常有趣和容易的

 Collections.sort(variants,(a,b)->a.compareTo(b)); Collections.reverse(variants); 

Lambdaexpression式在这里摇滚!

如果你需要多于一行的逻辑来比较ab,你可以这样写

 Collections.sort(variants,(a,b)->{ int result = a.compareTo(b); return result; }); 

sorting,然后颠倒。

一个更一般的方法来实现我们自己的比较器,如下所示

 Collections.sort(lst,new Comparator<Long>(){ public int compare(Long o1, Long o2) { return o2.compareTo(o1); } }); 

以下方法将按降序对列表进行sorting,并处理“ ”值,如果您有任何空值,则Collections.sort()将抛出NullPointerException

  Collections.sort(list, new Comparator<Long>() { public int compare(Long o1, Long o2) { return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1); } }); 

通过使用Collections.sort()和提供降序的比较器。 请参阅Javadoc的Collections.sort 。

您也可以使用TreeSet而不是comparatorArrayList进行sorting。 下面是一个我之前有一个整数数组问题的例子。 我使用“数字”作为ArrayList的占位符名称。


  import.java.util.*; class MyClass{ public static void main(String[] args){ Scanner input = new Scanner(System.in); ArrayList<Integer> numbers = new ArrayList<Integer>(); TreeSet<Integer> ts = new TreeSet<Integer>(numbers); numbers = new ArrayList<Integer>(ts); System.out.println("\nThe numbers in ascending order are:"); for(int i=0; i<numbers.size(); i++) System.out.print(numbers.get(i).intValue()+" "); System.out.println("\nThe numbers in descending order are:"); for(int i=numbers.size()-1; i>=0; i--) System.out.print(numbers.get(i).intValue()+" "); } }