您的位置:首页 > 其它

List排序通用方法

2015-01-26 17:26 246 查看
import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

public class SortList<E>{

public static void main(String[] args) {

Student zlj = new Student("丁晓宇", 21);

Student dxy = new Student("赵四", 22);

Student cjc = new Student("张三", 11);

Student lgc = new Student("刘武", 11);

List<Student> studentList = new ArrayList<Student>();

studentList.add(zlj);

studentList.add(dxy);

studentList.add(cjc);

studentList.add(lgc);

SortList1<Student> sort = new SortList1<Student>();

sort.Sort(studentList, "getAge", "asc");

for (Student student : studentList) {

System.out.println(student.getName() + ": " + student.getAge());

}

}

}

class SortList1<E> {

@SuppressWarnings("unchecked")

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;

}

});

}

}

class Student1 {

private int age;

private String name;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Student1(String name, int age) {

this.age = age;

this.name = name;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: