[英]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.