java list 排序

2025-11-06 23:27:45

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类根据自己实际情况进行定义。

java list 排序

2、设置数据:

例如我们是从数据库中查询出来的结果设置进去,如果数据不是按某个顺序放进去的话,当我们想换这个顺序取出来时就有些困难了。所以我们需要对这个结果排序。

3、取出来的数据是list.那么我们利用collections.sort()方法来排下序吧。

List<Object> list = getList();

Collections.sort(list, new Comparator<Object>() { 

    public int compare(Object a, Object b) {

//处理。。。

return 0;

}

}

java list 排序

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

java list 排序

java list 排序

5、下面说一个比较通过的Java list 排序方法。

缺点就是需要知道要比较的对象的类型有哪些。

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;

    }

   });

  }

 }

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢