我正在尝试在java中对Vector进行排序,但我的Vector不是int的向量,它是对象的向量
对象是:
public MyObject() {
numObj = 0;
price = new Price();
pax = new Pax();
}
所以我有一个Vector
MyObject
,我想按numObject
订购,我该怎么做,我是java的新手?
非常感谢你的帮助。
答案 0 :(得分:7)
我假设你正在使用Collections.sort(..)
。您有两种选择:
Comparable
Comparator
实施Comparable
的一个例子是:
public class MyObject implements Comparable<MyObject> {
// ..... other fields and methods
public int compareTo(MyObject other) {
return numObj - other.getNumObj();
}
}
这意味着项目按升序排序。如果您想要其他自定义排序,可以创建一个定义自定义比较的Comparator
并将其作为参数传递给Collections.sort(..)
;
答案 1 :(得分:2)
要对对象的矢量进行排序,首先MyObject类必须实现Comparable并实现方法compareTo(Object),然后使用Collections.sort(Vector)
class MyObject implements Comparable<MyObject> {
public int compareTo(MyObject a) {
//return either 1, 0, or -1
//that you compare between this object and object a
``}
}
//and in your logic write this line
Collections.sort(myVector);
检查Vector
的JavaDoc答案 2 :(得分:1)
实施Comparable将正常工作。但是,为了防止将来出现错误,应该谨慎行事。上面的实现非常适合排序,但如果您以后决定将MyObject实例放入SortedSet(例如TreeSet),则会出现意外行为。如果具有相同的numObject数据成员值,则不相同的项将相互冲突。发生这种情况是因为有序集使用Comparable实现(默认情况下)以确定相等性。
有关详细信息,请参阅http://eyalsch.wordpress.com/2009/11/23/comparators/。