按长 属性 排序对象列表
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
并且我的价格值大于整数范围的最大值!!!
如何在 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
:
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);
}
可以像这样使用 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
并且我的价格值大于整数范围的最大值!!!
如何在 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
:
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);
}