1、写一个工具类:
package com.test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortList<E> {
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());
if((Integer)m1.invoke(((E)a), null) > (Integer)m2.invoke(((E)b), null)){
return -1;
}else if((Integer)m1.invoke(((E)a), null) == (Integer)m2.invoke(((E)b), null)){
return 0;
}else{
return 1;
}
}else{//正序
// ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
if((Integer)m1.invoke(((E)a), null) > (Integer)m2.invoke(((E)b), null)){
return 1;
}else if((Integer)m1.invoke(((E)a), null) == (Integer)m2.invoke(((E)b), null)){
return 0;
}else{
return -1;
}
}
}catch(NoSuchMethodException ne){
System.out.println(ne);
}catch(IllegalAccessException ie){
System.out.println(ie);
}catch(InvocationTargetException it){
System.out.println(it);
}
return ret;
}
});
}
}
2、调用
public class testOrder1 {
public static void main(String[] args) {
List<testOrder> list = new ArrayList<testOrder>();
testOrder t1 = new testOrder("百度", 33, 20);
testOrder t2 = new testOrder("谷歌", 35, 21);
testOrder t3 = new testOrder("微信", 25, 35);
list.add(t1);
list.add(t2);
list.add(t3);
// List<testOrder> sortIntPeopleDes = sortIntPeopleDes(list);//人数逆序排列
// List<testOrder> sortIntPeopleDes = sortIntTimesNumDes(list);//次数逆序排列
SortList<testOrder> sortList = new SortList<testOrder>();
// t1.getTimesNum()
sortList.Sort(list, "getPeopleNum", "desc");
for (int i = 0; i < list.size(); i++) {
testOrder testOrder = (testOrder)list.get(i);
System.out.println(testOrder.getName()+" "+testOrder.getPeopleNum() +" "+testOrder.getTimesNum());
}
}
}
3、实体类
package com.test;
public class testOrder {
private String name;
private int peopleNum;
private int timesNum;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPeopleNum() {
return peopleNum;
}
public void setPeopleNum(int peopleNum) {
this.peopleNum = peopleNum;
}
public int getTimesNum() {
return timesNum;
}
public void setTimesNum(int timesNum) {
this.timesNum = timesNum;
}
public testOrder(String name, int peopleNum, int timesNum) {
this.name = name;
this.peopleNum = peopleNum;
this.timesNum = timesNum;
}
@Override
public String toString() {
return "testOrder [name=" + name + ", peopleNum=" + peopleNum + ", timesNum=" + timesNum + "]";
}
}