一个小小的排序类



import java.math.BigDecimal;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.beanutils.PropertyUtils;
/**
* 排序类 目前只支持当前页面排序
* 使用说明:SortUtil su = SortUtil.newInstance();
* su.setParam("你想排序的字段")
* su.toSort()方法 见方法说明
* @author litao
*/
@SuppressWarnings("unchecked")
public class SortUtil implements Comparator <Object>{
private static String t;
private static SortUtil su = null;

public SortUtil(){}
/**
* 要排序的字段名必需的
*/
public void setParam(String param) {
t=param;
}
public synchronized static SortUtil newInstance(){
if(su==null){
su = new SortUtil();
}
return su;
}
public int compare(Object o1, Object o2) {
String value1 = String.valueOf(getFieldValue(o1,t));
String value2 = String.valueOf(getFieldValue(o2,t));
try {
BigDecimal b1=BigDecimal.valueOf(Double.valueOf(value1));
BigDecimal b2=BigDecimal.valueOf(Double.valueOf(value2));
return b1.subtract(b2).intValue();
} catch (Exception e) {
return value1.compareTo(value2);
}
}

/**
* 升序(从小到大)
* @param list
* @return
*/
private List upSort(List list){
Collections.sort(list, SortUtil.newInstance());
return list;
}
/**
* 降序(升序之后反转)
* @param list
* @return
*/
private List downSort(List list){
this.upSort(list);
Collections.reverse(list);
return list;
}
/**
* 通过属性名获得对象的值
* @param entity
* @param propertyName
* @return
*/
private Object getFieldValue(Object entity , String propertyName ){
Object obj=null;
try {
obj=PropertyUtils.getProperty(entity,propertyName);
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
/**
* @param list
* @param orderByType 降序还是升序
* @return
*/
public List toSort(List list,String orderByType){
if("true".equals(orderByType)){
return upSort(list);
}else{
return downSort(list);
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值