多语言展示
当前在线:1172今日阅读:84今日分享:32

java list 排序

根据自己经验讲解一下java list排序
工具/原料

eclipse kepler

方法/步骤
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 list = getList();Collections.sort(list, new Comparator() {     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 list, final String method, final String sort) {  if (list != null) {   Collections.sort(list, new Comparator() {    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;    }   });  } }