将对象列表w.r.t排序到特定成员/状态

时间:2011-08-16 09:56:27

标签: java list sorting

我有一个包含4个成员的java对象列表。

int id;
String name;
String age;
int order;

我想对此对象的列表进行排序w.r.t order

4 个答案:

答案 0 :(得分:4)

class Foo {

    private int id;
    private String name;
    private String age;
    private int order;
    //accessors
}

使用自定义Comparator

    List<Foo> list = null;
    Collections.sort(list, new Comparator<Foo>() {

          public int compare(Foo o1, Foo o2) {
            return Integer.valueOf(o1.getOrder()).compareTo(Integer.valueOf( o2.getOrder()));
        }
    });

答案 1 :(得分:2)

  1. 您可以实现java.lang.Comparable接口并将排序逻辑放在compareTo(T o)中,否则
  2. 您可以使用自定义java.lang.Comparator并在compare()方法中使用逻辑。
  3. 我建议您实施自定义Comparator,如果您尝试修改排序条件,稍后就可以轻松完成。

答案 2 :(得分:1)

使对象实现Comparable

public class Person implements Comparable<Person> {
    private int id;
    private String name;
    private int order;

    public int compareTo(Person p) {
        return p.order - this.order;
    }
}

然后,您可以在Person等任何已排序的列表中使用此类PriorityQueue的对象,或者您只需使用Collections.sort(personList)即可。

答案 3 :(得分:0)

使用 PriorityQueue ,让您的对象扩展可比较

您还必须实施 compareTo(object o)方法。