java list 排序
1、pojo类:
public class ApexDictionary(){ private String value; private BigDecimal dictionaryOrder; private String getValue() { return value; } private void setValue(String value){ this.value = value; } public BigDecimal getDictionaryOrder() { return dictionaryOrder; } public void setDictionaryOrder(BigDecimal dictionaryOrder) { this.dictionaryOrder = dictionaryOrder; }}
pojo类根据自己实际情况进行定义。

2、设置数据:
例如我们是从数据库中查询出来的结果设置进去,如果数据不是按某个顺序放进去的话,当我们想换这个顺序取出来时就有些困难了。所以我们需要对这个结果排序。
3、取出来的数据是list.那么我们利用collections.sort()方法来排下序吧。
List<Object> list = getList();
Collections.sort(list, new Comparator<Object>() {
public int compare(Object a, Object b) {
//处理。。。
return 0;
}
}

4、看到上面的图片,再说一下int与BigDecimal如何互相转换。
1)int 转换为BigDecimal:
int a = 1;
BigDecimal b = new BigDecimal(a);
2)BigDecimal转换为int:
BigDecimal b = new BigDecimal(123.456);
int a = b.intValue();//此时a的值为123


5、下面说一个比较通过的Java list 排序方法。
缺点就是需要知道要比较的对象的类型有哪些。

6、public void sort(List<E> list, final String method, final String sort) {
if (list != null) {
Collections.sort(list, new Comparator<Object>() {
public int compare(Object a, Object b) {
int result = 0;
try {
Method m1 = a.getClass().getMethod(method, null);
Method m2 = b.getClass().getMethod(method, null);
Object obj1 = m1.invoke(a, null);
Object obj2 = m2.invoke(b, null);
if(obj1 instanceof Integer){
if (sort != null && "desc".equals(sort))// 倒序
result= new Integer((int) obj2).compareTo( new Integer((int) obj1));
else// 正序
result= new Integer((int) obj1).compareTo(new Integer((int) obj2));
}
else if( obj1 instanceof Date){
if (sort != null && "desc".equals(sort))// 倒序
result= ((Date) obj2).compareTo((Date) obj1);
else// 正序
result= ((Date) obj1).compareTo((Date) obj2);
}
else{
if (sort != null && "desc".equals(sort))// 倒序
result= obj2.toString().compareTo(obj1.toString());
else// 正序
result= obj1.toString().compareTo(obj2.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
});
}
}