List排序
2020-07-16  本文已影响0人  栖夕栖兮

List<Object>排序

需求是根据一个对象的list中的某个字段的值排序,比如根据列表中人的年龄排序:

在实体类中继承Comparable接口并重写compareTo()方法,方法里是自己需求比较的函数,可以根据自己的需求去写。

package com.example.Test;

/**

  • @author Administrator

*/
public class TestObj implements Comparable<TestObj> {

public int id;

public String name;

public int age;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}

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;
}

@Override
public String toString() {
    return "TestObj [id=" + id + ", name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(TestObj o) {
    // TODO Auto-generated method stub
    return String.valueOf(this.getAge()).compareTo(String.valueOf(o.getAge()));
}

}

然后调用Collections.sort(list)进行排序

@Test
public void testListSort() {
List<TestObj> list = new ArrayList<>();

     TestObj obj1 = new TestObj();
     obj1.setId(1);
     obj1.setName("张三");
     obj1.setAge(16);
     
     TestObj obj2 = new TestObj();
     obj2.setId(2);
     obj2.setName("李四");
     obj2.setAge(20);
     
     TestObj obj3 = new TestObj();
     obj3.setId(3);
     obj3.setName("王五");
     obj3.setAge(12);
     
     TestObj obj4 = new TestObj();
     obj4.setId(4);
     obj4.setName("赵六");
     obj4.setAge(24);
     
     list.add(obj1);
     list.add(obj2);
     list.add(obj3);
     list.add(obj4);
     
     Collections.sort(list);
     for (TestObj testObj : list) {
        System.out.println(testObj.toString());
    }
 }

输出结果

TestObj [id=3, name=王五, age=12]
TestObj [id=1, name=张三, age=16]
TestObj [id=2, name=李四, age=20]
TestObj [id=4, name=赵六, age=24]

上一篇 下一篇