簡體   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