web-dev-qa-db-ja.com

ベクターの並べ替えに使用できる関数は何ですか?

Java APIでソート関数が見つかりません。Collections.sortList<T>専用であり、Vector<T>では使用できません。

Javaはこれを実装する必要があると思うので、自分でソート関数を記述したくありません。

私は次のようなものを探しています:

class ClassName implements Comparator<ClassName> ..
ClassName cn = ..;
sort(cn);
20
Hidayat

API docs のように、VectorListを実装するだけなので、問題を予測していません。古い_ Java 1.0スタイルに従ってVectorを宣言したため、混乱が生じた可能性があります。

_Vector vector = new Vector();
_

インターフェースで宣言する代わりに(これは良い習慣と考えられています):

_List list = new Vector();
_

したがって、 Collections#sort() を使用してコレクションを並べ替えたり、 Comparable を使用してデフォルトの順序付け動作を定義したり、-または Comparator 外部の制御可能な順序付け動作を定義します。

これがオブジェクトの順序付けに関する Sunチュートリアル です。

これが別の SO answer で、完全なコード例を示します。

とはいえ、なぜlegacyVectorクラスを引き続き使用するのですか?可能であれば、10年以上前にArrayListの置き換えとして設計された、改良された Vector に置き換えてください。

28
BalusC

VectorはListを実装しているため、Collections.sortが機能します。

15
jsight

Java Vector クラスのAPI仕様に従って、それは List インターフェースを実装します Collections.sort メソッドを使用するために必要です。

また、メモとして、ほとんどの用途でVectorクラスは、Java Collections FrameworkのList実装の1つを使用して置き換えることができます。 ArrayListVectorクラスは同期されるため、同期アクセスが実際に必要でない限り、他のList実装の1つを使用する必要があります。

5
coobird

ベクトルはリストです

2
les2

Collections.sort(nameOfTheVectorToBeSorted);これをあなたのベクトルで試してください、それはソートされます。

1
user2190247

クラスに_implements Comparable<>_を追加することを忘れないでください:

_public class XXXX 
    implements Comparable<XXXX> {

}
_

そして、ベクトルに格納されているオブジェクトタイプのクラスでcompareTo()を再定義します。

私もこの問題を抱えていました、Eclipse IDEはCollection.sort()は_List<T>_専用であると言っていました。前記。

1
JoVroye

Collections.sort(vector_name)

これはベクターを所定の位置に並べ替えるので、上記のコマンドの結果をベクターに割り当てる必要はありません。

これは、ベクターがリストの実装であるため機能します。

0
Crt