是否可以将compareTo()方法中的Integers与Collections.sort()进行比较,因为当我运行以下代码时,它将无法编译;编译器说这个有一个错误,因为它将这个与另一个整数进行比较。我试图按降序对数字进行排序。
import java.util.*;
public class main implements Comparable <Integer> {
public static void main(String [] args) {
ArrayList <Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(5);
list.add(4);
Collections.sort(list);
System.out.println(list);
}
public int compareTo(Integer other) {
if (this > other){
return -1;
}
if (this < other){
return 1;
}
return 0;
}
}
答案 0 :(得分:1)
this
是main
的一个实例,您无法将<
或>
运算符应用于该实例。坦率地说,你不需要。只需使用Integer
的自然顺序并尊敬它:
list.sort(Comparator.<Integer>naturalOrder().reversed());
答案 1 :(得分:1)
制作自己的Comparable<Integer>
不会更改Integer
的默认排序。 Integer
是最终的,所以你不能对它进行分类。您可以撰写Comparator<Integer>
并使用它。 或,您可以简单地获取reverseOrder()
Comparator
。像,
Collections.sort(list, Comparator.reverseOrder());
或强>
Collections.sort(list, (a, b) -> Integer.compare(b, a));
答案 2 :(得分:0)
02:30:00
答案 3 :(得分:0)
使用Collections.sort(list, c)
对ArrayList
如果你想自己动手,这里有一个bubble-sort
的例子import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(5);
list.add(4);
Main.bubble(list);
System.out.println(list);
}
private static void swap(ArrayList<Integer> list, int x, int y) {
Integer temp = list.get(x);
list.set(x, list.get(y));
list.set(y, temp);
}
public static void bubble(ArrayList<Integer> list) {
boolean done = false;
while (!done) {
done = true;
for (int i = 0; i + 1 < list.size(); i++) {
/* Sort */
if (list.get(i) > list.get(i + 1)) {
swap(list, i, i + 1);
done = false;
}
// /* Sort - in reverse order */
// if (list.get(i) < list.get(i + 1)) {
// swap(list, i, i + 1);
// done = false;
// }
}
}
}
}