如何在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式在这里摇滚!
如果你需要多于一行的逻辑来比较a和b,你可以这样写
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
而不是comparator
对ArrayList
进行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()+" "); } }