给List中的对象排序

package com.asia.home.cn.utils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* @author zhutongyu
* List排序
* @param <E>
*/
public class SortList<E>{
/**
* 给List中的对象属性排序,如:list<Exiuser>按"入职时间"排序
* @param list
* @param method //指定方法,如getFdWorkDay
* @param sort //"desc"为倒顺,否则为升序
*/
public void Sort(List<E> list, final String method, final String sort){
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
int ret = 0;
try{
Method m1 = ((E)a).getClass().getMethod(method, null);
Method m2 = ((E)b).getClass().getMethod(method, null);
if(sort != null && "desc".equals(sort))//倒序
ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());
else//正序
ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
}catch(NoSuchMethodException ne){
System.out.println(ne);
}catch(IllegalAccessException ie){
System.out.println(ie);
}catch(InvocationTargetException it){
System.out.println(it);
}
return ret;
}
});
}

/**
* 给List<Object>中的任一属性排序
* @param list
* @param index //Object数组的下标
* @param sort
*/
public void SortObject(List<E> list, final int index, final String sort){
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
int ret = 0;
Object m1[] = (Object[])a;
Object m2[] = (Object[])b;
if(sort != null && "desc".equals(sort))//倒序
ret = m2[index].toString().compareTo(m1[index].toString());
else//正序
ret = m1[index].toString().compareTo(m2[index].toString());
return ret;
}
});
}
}


使用方法:
//调用排序通用类
SortList<Object> sortList = new SortList<Object>();

//按下标为5的值排序
sortList.SortObject(taskList, 5, "desc");

//调用排序通用类
SortList<Exiuser> sortList = new SortList<Exiuser>();

//按方法排序
sortList.SortObject(taskList, "getFdWorkDay", "desc");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值