将对象列表排序到特定成员/状态

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

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

我想按order排序这个对象的列表。

 class Foo { private int id; private String name; private String age; private int order; //accessors } 

使用自定义Comparator

  List list = null; Collections.sort(list, new Comparator() { public int compare(Foo o1, Foo o2) { return Integer.valueOf(o1.getOrder()).compareTo(Integer.valueOf( o2.getOrder())); } }); 
  1. 您可以实现java.lang.Comparable接口并将排序逻辑放在compareTo(T o)或其他位置
  2. 你可以使用自定义java.lang.Comparator并在compare()方法中使用逻辑。

我建议实现自定义Comparator,如果你试图修改你的排序标准,稍后就可以轻松完成。

使对象实现Comparable

 public class Person implements Comparable { private int id; private String name; private int order; public int compareTo(Person p) { return p.order - this.order; } } 

然后,您可以在任何排序列表(例如PriorityQueue Collections.sort(personList)使用此类Person对象,或者您可以简单地使用Collections.sort(personList)

使用PriorityQueue让您的对象扩展为Comparable

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