按长 属性 排序对象列表

Sorting List of Objects by long property

可以像这样使用 Collections.sort(object) 比较 int 值:

Collections.sort(priceList, new Comparator<MyObject>() {
    @Override
    public int compare(MyObject o1, MyObject o2) {
        return Integer.parseInt(o1.getPrice()) - Integer.parseInt(o2.getPrice());
    }
});

Long.compare 在 API 19 及更高版本中可用,以使用 Collections.sort(object):

比较长值
Collections.sort(priceList, new Comparator<MyObject>() {
    @Override
    public int compare(MyObject o1, MyObject o2) {
        return Long.compare(o2.getPrice(), o1.getPrice());
    }
});

但是我的应用程序的 minSdkVersion16 并且我的价格值大于整数范围的最大值!!!

如何在 API 16 级及更高级别中按 long 属性 对我的对象列表进行排序?

Long#compare的定义:

public static int compare(long x, long y) {
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

同样,如果值大于另一个值,您可以 return 1,如果等于 0,如果小于 -1

Collections.sort(priceList, new Comparator<MyObject>() {
    @Override
    public int compare(MyObject o1, MyObject o2) {
       return (o1.getPrice() < o2.getPrice()) ? -1 : ((o1.getPrice() == o2.getPrice()) ? 0 :1 );
});

您可以按如下方式实现比较方法。这应该可以解决您的问题。

public int compare(MyObject o1, MyObject o2) {
                return o1.getPrice() < o2.getPrice ?-1 :(o1.getPrice == o2.getPrice ?0 :1);

}