将对象列表排序到特定成员/状态
我有一个包含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())); } });
- 您可以实现java.lang.Comparable接口并将排序逻辑放在compareTo(T o)或其他位置
- 你可以使用自定义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)方法。