Answers:
这是您的一种方式list
:
list.sort(null);
Collections.reverse(list);
或者,您可以实施自己Comparator
的排序并消除相反的步骤:
list.sort((o1, o2) -> o2.compareTo(o1));
甚至更简单地使用,Collections.reverseOrder()
因为您只需要反转:
list.sort(Collections.reverseOrder());
o2.compareTo(o1)
这里:)
list.sort((o1, o2) -> o2.compareTo(o1))
您可以使用下面给出的以下代码;
Collections.sort(list, Collections.reverseOrder());
或者,如果您要使用自定义比较器,则可以按照以下说明使用
Collections.sort(list, Collections.reverseOrder(new CustomComparator());
其中CustomComparator是一个比较器类,用于比较列表中存在的对象。
在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;
});
正常排序并使用 Collections.reverse();
通过Collections.sort()
与提供递减顺序的比较器一起使用。请参阅Javadoc for Collections.sort。
您也可以ArrayList
使用TreeSet
而不是来对进行排序comparator
。这是我之前对整数数组提出的一个问题示例。我使用“数字”作为的占位符名称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()+" ");
}
}
因此,我想提出一些我认为很重要的事情,我认为您应该考虑一下。运行时和内存。假设您有一个列表并希望对其进行排序,那么可以,有一个内置的排序列表,也可以开发自己的列表。然后您说,要反转列表。那就是上面列出的答案。
但是,如果要创建该列表,则最好使用其他数据结构来存储它,然后将其转储到数组中。
堆就是这样做的。您过滤数据,它将处理所有内容,然后可以从对象中弹出所有内容并将其排序。
另一个选择是了解地图的工作方式。很多时候,Map或HashMap被称为“事物”,其背后都有一个潜在的概念。
例如,您输入了一堆键值对,其中键是长键,当您添加所有元素时,您可以执行以下操作: .keys
它会自动返回排序列表。
这取决于您如何处理数据以及我认为应该如何继续进行排序和后续的反向操作
l1 > l2 ? -1 : l1 == l2 ? 0 : 1
这段代码很荒谬。o1.compareTo(o2)
然后使用。