趣百科

java list 排序

编辑:Simone 2024-11-02 07:41:08 531 阅读

java list 排序

根据自己经验讲解一下java list排序

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

设置数据:

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

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

List list = getList();

Collections.sort(list, new Comparator() {

public int compare(Object a, Object b) {

//处理。。。

return 0;

}

}

看到上面的图片,再说一下int与BigDecimal如何互相转换。

1)int 转换为BigDecimal:

int a = 1;

BigDecimalb = new BigDecimal(a);

2)BigDecimal转换为int:

BigDecimal b = new BigDecimal(123.456);

int a = b.intValue();//此时a的值为123

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

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

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;

}

});

}

}

版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/answer/43751.html

相关推荐