【发布时间】:2017-07-12 22:06:20
【问题描述】:
考虑以下带有Pojo 对象的列表:
List<Pojo> list = new ArrayList<>();
....
class Pojo {
private int field1;
private int field2;
...
}
注意:Pojo 可以有两个以上的字段
我正在按升序对Pojo-s 列表进行排序:
Collections.sort(list, new Comparator<Pojo>() {
@Override
public int compare(Pojo o1, Pojo o2) {
int fieldCompareTo = compare(o1.field1, o2.field1);
if (fieldCompareTo == 0) {
fieldCompareTo = compare(o1.field2, o2.field2);
}
return fieldCompareTo;
}
});
private static int compare(int a, int b) {
return a < b ? -1
: a > b ? 1
: 0;
}
在这里,我将得到按升序排序的列表。
我的问题是:如果我颠倒列表,我会得到降序吗?
我只是打电话给Collections.reverse(list)
【问题讨论】:
-
说,一个排序列表是
[1, 2, 3, 4],并且将它反转得到[4, 3, 2, 1]。这是你说的场景吗? -
是的。但我正在排序 Class 对象,而不是原语。
-
比较什么并不重要,因为您告诉 Java 如何比较您的对象。而
Collections.reverse(list)只是还原列表,无需进一步比较。 -
仅供参考:您的
compare(int a, int b)方法已由 Java 7+ 运行时库实现:Integer.compare(int a, int b)