繁体   English   中英

按long属性排序对象列表

[英]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 ,我的价格值大于int范围的最大值!!!

如何在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如果小于,则返回-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);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM