如何按降序排序ArrayList ?
如何按降序排序Java中的ArrayList?
Tamara asked 2019-08-20T11:46:41Z
12个解决方案
230 votes
这是您的Collections.reverseOrder()的一种方式:
list.sort(null);
Collections.reverse(list);
或者您可以实现自己的Collections.reverseOrder()进行排序并消除相反的步骤:
list.sort((o1, o2) -> o2.compareTo(o1));
或者甚至更简单地使用Collections.reverseOrder(),因为您只是倒车:
list.sort(Collections.reverseOrder());
WhiteFang34 answered 2019-08-20T11:47:07Z
25 votes
Comparator comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);
u449355 answered 2019-08-20T11:47:25Z
18 votes
您可以使用下面给出的以下代码;
Collections.sort(list, Collections.reverseOrder());
或者如果您打算使用自定义比较器,您可以使用下面给出的
Collections.sort(list, Collections.reverseOrder(new CustomComparator());
CustomComparator是比较器类,用于比较列表中存在的对象。
Balasubramanian Jayaraman answered 2019-08-20T11:48:04Z
9 votes
Java 8
在java 8中这样做很有趣也很容易
Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);
Lambda表达摇滚在这里!!!
如果您需要多个线路逻辑来比较a和b,您可以这样写
Collections.sort(variants,(a,b)->{
int result = a.compareTo(b);
return result;
});
azerafati answered 2019-08-20T11:48:47Z
7 votes
正常排序并使用Collections.reverse();
Manoj answered 2019-08-20T11:49:12Z
2 votes
排序,然后反转。
Mehrdad answered 2019-08-20T11:49:37Z
2 votes
实现我们自己的比较器的更通用的方法如下
Collections.sort(lst,new Comparator(){
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
josephj1989 answered 2019-08-20T11:50:02Z
2 votes
对于lamdas,你的长值是在对象的某个地方,我建议使用:
.sorted((o1, o2) -> Long.compare(o1.getLong(), o2.getLong()))
甚至更好:
.sorted(Comparator.comparingLong(MyObject::getLong))
BluE answered 2019-08-20T11:50:36Z
1 votes
通过使用Collections.sort()和一个提供降序的比较器。请参阅Javadoc for Collections.sort。
Heiko Rupp answered 2019-08-20T11:51:01Z
1 votes
以下方法将按降序对列表进行排序,并处理' null' 值,以防万一你有任何空值,然后Collections.sort()将抛出NullPointerException
Collections.sort(list, new Comparator() {
public int compare(Long o1, Long o2) {
return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1);
}
});
Jagadeesh answered 2019-08-20T11:51:27Z
0 votes
您还可以使用TreeSet而不是comparator对ArrayList进行排序。这是我之前对整数数组的问题的一个示例。 我正在使用"数字" 作为ArrayList的占位符名称。
import.java.util.*;
class MyClass{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
ArrayList numbers = new ArrayList();
TreeSet ts = new TreeSet(numbers);
numbers = new ArrayList(ts);
System.out.println("\nThe numbers in ascending order are:");
for(int i=0; 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()+" ");
}
}
009 answered 2019-08-20T11:51:54Z
0 votes
所以,我想提出一些我认为很重要的内容,我认为你应该考虑一下。 运行时和内存。 假设您有一个列表,并希望对其进行排序,您可以,有内置排序或您可以开发自己的。 然后你说,想要反转清单。 这就是上面列出的答案。
如果您正在创建该列表,最好使用不同的数据结构来存储它,然后将其转储到数组中。
堆就是这样做的。 您过滤数据,它将处理所有内容,然后您可以弹出对象的所有内容,它将被排序。
另一种选择是了解地图的工作原理。 很多时候,Map或HashMap被称为事物,它背后有一个潜在的概念。
例如....你输入一组键值对,其中键是长的,当你添加所有元素时,你可以这样做:.keys它将自动返回给你一个排序列表。
这取决于您之前如何处理数据,以及我认为您应该如何继续进行排序和后续反转
Fallenreaper answered 2019-08-20T11:53:00Z