可能重复:
Sorting a collection of objects
Sorting an ArrayList of Contacts based on name?
快速提问:
我有ArrayList<MyObject>
个MyObject
个对象。我希望它们基于整数变量MyObject
进行排序。
有没有现成的方法来实现这个,还是我必须自己写一个quicksort / mergesort?
感谢您的时间, 迪米瑞斯
答案 0 :(得分:2)
您需要实现Comparable接口并覆盖compareTo。 下面的示例我假设有一个成员变量'name',您将在其上比较对象。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class MyObject implements Comparable<MyObject>{
private String name;
private int id;
public String getName() {
return name;
}
public MyObject(String name, int id) {
super();
this.name = name;
this.id = id;
}
@Override
public int compareTo(MyObject o) {
return name.compareTo(o.getName());
}
@Override
public String toString() {
return name+"\t"+id+"\n";
}
}
public class Test {
public static void main(String[] args) {
List<MyObject> list = new ArrayList<MyObject>();
list.add(new MyObject("John", 10));
list.add(new MyObject("Mark", 11));
list.add(new MyObject("Steve", 9));
Collections.sort(list);
System.out.println("Sorted list is :"+list);
}
}
答案 1 :(得分:1)
您想要查看比较器,它们允许您以任何方式定义排序顺序。这是文档http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
答案 2 :(得分:1)
您可以使用Array.sort(...)
您只能为Comparator
实施MyObject
或将Comparable
设为{{1}}。
答案 3 :(得分:1)
您还可以使用Collections.sort()
库并为您的对象传入您的馆藏(ArrayList
)和专门设计的Comperator
。
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html[enter link description here][1]