由于需要,按照不同字段对List中对象进行排序,就学习了下反射和JDK中相关接口就写了个排序工具类。目前支持对象属性排序:字符串类型,Integer、Long基本类型的排序。如果需要其它类型比较可以根据自己需求进行扩展。
升序或者降序的枚举类
public enum OrderType { DESC(1, "降序"), ASC(2, "升序"); /** * 类型值 */ private Integer value; /** * 描述 */ private String desc; private OrderType(Integer value, String desc) { this.value = value; this.desc = desc; } public Integer getValue() { return value; } public String getDesc() { return desc; }}bean对象
public class Student { private String name; private Integer age; public Student(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '/'' + ", age=" + age + '}'; }}测试程序
public class TestMain { public static void main(String[] args) { List<Student> students=new ArrayList(); students.add(new Student("abc",15)); students.add(new Student("bac",19)); students.add(new Student("aac",18)); System.out.println("--按照age降序---"); ListSortUtil.sort(students,"age",OrderType.DESC); print(students); System.out.println("--按照name升序---"); ListSortUtil.sort(students,"name",OrderType.ASC); print(students); } public static void print(List<Student> students) { for(Student student:students) { System.out.println(student.toString()); } }}输出:
--按照age降序---Student{name='bac', age=19}Student{name='aac', age=18}Student{name='abc', age=15}--按照name升序---Student{name='aac', age=18}Student{name='abc', age=15}Student{name='bac', age=19}新闻热点
疑难解答