考虑使用PojoObject 的以下列表:
List<Pojo> list = new ArrayList<>();
....
class Pojo {
private int field1;
private int field2;
...
}
Run Code Online (Sandbox Code Playgroud)
注意: 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;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将按升序排序列表.
我的问题是:如果我撤销列表,我会降序吗?
我只是打电话 Collections.reverse(list)
And*_*eas 10
是的,反转列表(按升序排序)将为您提供按降序排序的列表.
但是,它可能不会给您与按降序排序列表相同的结果.
这是因为Collections.sort()保证稳定,即由于排序而不会重新排序相等的元素.
如果您的列表具有多个对象,根据它们Comparator是"相等",但不完全相同(即可以区分),则反转列表将颠倒它们的顺序,但按降序排序将使它们按顺序排列.
例如:假设你有名称的列表:John Doe,Jane Smith,Jim Doe
如果您只按姓氏排序,John Doe并且Jim Doe相同,并将保持该顺序.
因此,升序排序为您提供:John Doe,Jim Doe,Jane Smith
倒车,让你:Jane Smith,Jim Doe,John Doe
这是按姓氏递减的顺序,但它与按降序排序列表不同.
一个稳定的降序排序为您提供:Jane Smith,John Doe,Jim Doe
当然,如果根据不存在两个相等的元素,则按Comparator升序排序的列表的反转与按列表递减排序完全相同.
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |