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);
}
}
}
一个小小的排序类
最新推荐文章于 2024-07-30 20:40:27 发布