标签:泛型集合排序 根据集合中实体类的某个属性值排序 属性排序
泛型集合排序,根据实体类对象的某个属性排序
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; import sy.model.aite.analysis.SelfTestAnalysis; /** * 泛型集合排序,根据实体类对象的某个属性排序 * @author admin * * @param <E> */ public class SortList<E> { public void Sort(List<E> list, final String method, final String sort) { Collections.sort(list, new Comparator<Object>() { 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; } }); } public static void main(String[] args) { List<SelfTestAnalysis> list = new ArrayList<SelfTestAnalysis>(); SelfTestAnalysis st1 = new SelfTestAnalysis(); st1.setStatus("OK"); st1.setPlateNumber("车牌"); st1.setForSort(2); list.add(st1); SelfTestAnalysis st2 = new SelfTestAnalysis(); st2.setStatus("NG"); st1.setPlateNumber("车牌"); st2.setForSort(3); list.add(st2); SelfTestAnalysis st3 = new SelfTestAnalysis(); st3.setStatus("OFF"); st1.setPlateNumber("车牌"); st3.setForSort(1); list.add(st3); SelfTestAnalysis st4 = new SelfTestAnalysis(); st4.setStatus("OFF"); st1.setPlateNumber("车牌"); st4.setForSort(1); list.add(st4); System.out.println("默认排序"); for(SelfTestAnalysis test : list){ System.out.println(test.toString()); } System.out.println(); SortList<SelfTestAnalysis> sort = new SortList<SelfTestAnalysis>(); System.out.println("getNum的desc排序"); sort.Sort(list, "getForSort", "desc"); for(SelfTestAnalysis test : list){ System.out.println(test.toString()); } System.out.println(); System.out.println("getNum的asc排序"); sort.Sort(list, "getStatus", null); for(SelfTestAnalysis test : list){ System.out.println(test.toString()); } } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:泛型集合排序 根据集合中实体类的某个属性值排序 属性排序
原文地址:http://blog.csdn.net/boybruce/article/details/47293679