[英]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());
}
});
但我的應用程序的minSdkVersion
是16
,我的價格值大於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.