web-dev-qa-db-ja.com

コレクション:なぜベクターは使用されなくなったのに、まだ残っているのですか?

リモートマシンでSSHジョブを実行するためのコードを書いており、私が(強制されている)使用しているメソッドの1つがベクター型を返します。私は数年前にそれらについて学びましたが、今まで実際にそれらを使用する機会がありませんでした。

それらについて私が知っていることは

  1. 彼らはスレッドセーフではありません
  2. それらは非常に古く、非推奨です(Netbeansは「廃止されたコレクション」であることを警告しています)

スレッドセーフでないことは、あなたが注意を払っていれば、大したことではないようです。しかし、私はそれらを却下するのに十分だとは思いません。何か不足していますか?

編集:

私はここでベクターが廃止されていることで深刻な問題に触れたようです(廃止予定は適切なWordではない可能性があります)。

5
svarog

Java8 Vectorのソースには、廃止された通知はありません。

ヘッダーには次のコメントがあります。

新しいコレクションの実装とは異なり、{@ code Vector}は同期されます。スレッドセーフな実装が必要ない場合は、{@ code Vector}の代わりに{@link ArrayList}を使用することをお勧めします。

さらに、ArrayListをパラメーターとしてCollections.synchronisedList()を使用して、ベクターが実行できることを置き換えることができます。

しかし、そうでなければ、ベクターはうまく機能しません。

あなたが本当にそれが好きではない場合:

List l = new ArrayList(myFunctionThatReturnAVector());
7
Walfrat