モジュール java.base
パッケージ java.util

クラスVector<E>

java.lang.Object
型パラメータ:
E - 構成要素の型
すべての実装されたインタフェース:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess, SequencedCollection<E>
直系の既知のサブクラス:
Stack

public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
Vectorクラスは、オブジェクトの可変長配列を実装します。 ここには配列と同じように、整数インデックスを使ってアクセスできる要素が格納されています。 しかし、Vectorのサイズは、Vectorの作成後に追加および削除された項目を格納できるように必要に応じて増やしたり減らしたりすることができます。

各ベクトルは、capacitycapacityIncrementを維持することによって記憶領域の管理を最適化しようとします。 capacityは常にベクトルのサイズ以上であり、通常はより大きくなります。これは、ベクトルにコンポーネントが追加されるとき、ベクトルの記憶領域はcapacityIncrementずつかたまりで増やされるからです。 多くの要素を挿入する前にアプリケーションで容量を必要な値に設定しておけば、メモリーの再配分の回数を減らすことができます。

このクラスのiteratorおよびlistIteratorメソッドによって返されるイテレータは、フェイルファストです。イテレータの作成後に、イテレータ自体のremoveまたはaddメソッド以外の方法でベクトルが構造的に変更されると、イテレータはConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。 elementsメソッドによって返されるEnumerationsは、高速ではありません。Vectorが列挙の作成後に構造的に変更された場合、列挙の結果は未定義です。

通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、イテレータのフェイルファストの動作を保証することはできません。 フェイルファスト・イテレータは、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。 したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。イテレータのフェイルファストの動作はバグを検出するためにのみ使用すべきです。

このクラスは、Java 2プラットフォームv1.2の時点でListインタフェースを実装するように改良された結果、Java Collections Frameworkのメンバーとなりました。 新しいコレクションの実装とは異なり、Vectorは同期をとります。 スレッドセーフな実装が必要ない場合は、Vectorの代わりにArrayListを使用することをお薦めします。

導入されたバージョン:
1.0
関連項目: