我想排序在Java中的向量,但我Vector是不是int型的載體,它是對象排序自定義對象的矢量
的對象是一個向量:
public MyObject() {
numObj = 0;
price = new Price();
pax = new Pax();
}
所以我有一個Vector
的MyObject
,我想訂購numObject
,我該怎麼做,我是新的Java?
非常感謝您的幫助。
我想排序在Java中的向量,但我Vector是不是int型的載體,它是對象排序自定義對象的矢量
的對象是一個向量:
public MyObject() {
numObj = 0;
price = new Price();
pax = new Pax();
}
所以我有一個Vector
的MyObject
,我想訂購numObject
,我該怎麼做,我是新的Java?
非常感謝您的幫助。
要排序的對象的向量,第一類爲MyObject必須實現可比和實施方法的compareTo(對象),然後使用Collections.sort(向量)的
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);
檢查的JavaDoc Vector
我假設您使用的是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(..)
;
實現Comparable將會正常工作。但是,爲了防止未來的錯誤,應該謹慎對待。上面的實現非常適合排序,但如果您稍後決定將MyObject實例放入SortedSet(如TreeSet)中,則會出現意想不到的行爲。如果它們具有相同的numObject數據成員的值,那麼不相同的項目將相互衝突。發生這種情況是因爲排序集使用Comparable實現(默認情況下)以確定相等性。
最好使用泛型與'比較器' – Bozho 2010-04-02 17:29:44
非常感謝你的快速答案,我實現了Comparable MyObject類,它的工作原理很好 謝謝 –
Eddinho
2010-04-02 17:49:45