按长整型属性对对象列表进行排序

3

可以使用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属性对我的对象列表进行排序?

2个回答

2

Look at the definition of Long#compare :

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

同样地,如果一个值大于另一个值,你可以简单地return 1,如果相等,则return 0,如果小于,则return -1:





Original Answer
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 );
});

天啊,你说得对。疲劳让我思考不清楚。 - Alireza Noorali

1
您可以按照以下方式实现compare方法。这应该解决您的问题。
public int compare(MyObject o1, MyObject o2) {
                return o1.getPrice() < o2.getPrice ?-1 :(o1.getPrice == o2.getPrice ?0 :1);

}

你的答案也是正确的。感谢你的时间,但是阿米特回答得更快。 - Alireza Noorali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接