Java APIでソート関数が見つかりません。Collections.sort
はList<T>
専用であり、Vector<T>
では使用できません。
Javaはこれを実装する必要があると思うので、自分でソート関数を記述したくありません。
私は次のようなものを探しています:
class ClassName implements Comparator<ClassName> ..
ClassName cn = ..;
sort(cn);
API docs のように、Vector
はList
を実装するだけなので、問題を予測していません。古い_ Java 1.0スタイルに従ってVector
を宣言したため、混乱が生じた可能性があります。
_Vector vector = new Vector();
_
インターフェースで宣言する代わりに(これは良い習慣と考えられています):
_List list = new Vector();
_
したがって、 Collections#sort()
を使用してコレクションを並べ替えたり、 Comparable
を使用してデフォルトの順序付け動作を定義したり、-または Comparator
外部の制御可能な順序付け動作を定義します。
これがオブジェクトの順序付けに関する Sunチュートリアル です。
これが別の SO answer で、完全なコード例を示します。
とはいえ、なぜlegacyVector
クラスを引き続き使用するのですか?可能であれば、10年以上前にArrayList
の置き換えとして設計された、改良された Vector
に置き換えてください。
VectorはListを実装しているため、Collections.sortが機能します。
Java Vector
クラスのAPI仕様に従って、それは List
インターフェースを実装します Collections.sort
メソッドを使用するために必要です。
また、メモとして、ほとんどの用途でVector
クラスは、Java Collections FrameworkのList
実装の1つを使用して置き換えることができます。 ArrayList
。Vector
クラスは同期されるため、同期アクセスが実際に必要でない限り、他のList
実装の1つを使用する必要があります。
ベクトルはリストです
Collections.sort(nameOfTheVectorToBeSorted);これをあなたのベクトルで試してください、それはソートされます。
クラスに_implements Comparable<>
_を追加することを忘れないでください:
_public class XXXX
implements Comparable<XXXX> {
}
_
そして、ベクトルに格納されているオブジェクトタイプのクラスでcompareTo()
を再定義します。
私もこの問題を抱えていました、Eclipse IDEはCollection.sort()
は_List<T>
_専用であると言っていました。前記。
Collections.sort(vector_name)
これはベクターを所定の位置に並べ替えるので、上記のコマンドの結果をベクターに割り当てる必要はありません。
これは、ベクターがリストの実装であるため機能します。