Java Vector クラス

Vector クラスは動的配列を実装しています。ArrayList と非常に似ていますが、両者には違いがあります:

特性VectorArrayList
同期性同期(スレッドセーフ)同期しない
性能遅い速い
容量拡張の増分指定可能固定(50%)
イテレータfail-fastfail-fast
導入バージョンJava 1.0Java 1.2

特徴:

  1. 同期:Vector はスレッドセーフであり、すべてのメソッドが同期されています。

  2. 動的拡張:要素数が現在の容量を超えると自動的に増加します。

  3. レガシークラス:現在でも使用可能ですが、通常は ArrayList の使用が推奨されます。

  4. RandomAccess インターフェースを実装しています:高速なランダムアクセスをサポートします。

Vector は主に、事前に配列のサイズが分からない場合や、サイズを変更できる配列が必要な場合に使用されます。

Vector クラスは 4 つのコンストラクタをサポートしています。

最初のコンストラクタは、デフォルトサイズ 10 のベクターを作成します:

Vector()

2 番目のコンストラクタは、指定したサイズのベクターを作成します。

Vector(int size)

3 番目のコンストラクタは、指定したサイズのベクターを作成し、増分は incr で指定します。増分は、ベクターが毎回増加する要素数を表します。

Vector(int size,int incr)

4 番目のコンストラクタは、コレクション c の要素を含むベクターを作成します:

Vector(Collection c)

親クラスから継承したメソッドに加えて、Vector は以下のメソッドも定義しています:

よく使われる操作

例

// 要素を追加
boolean add(E e) // 末尾に要素を追加
void add(int index, E element) // 指定位置に要素を挿入
boolean addAll(Collection<? extends E> c) // コレクション内のすべての要素を追加

// 要素を取得
E get(int index) // 指定位置の要素を取得
E firstElement() // 最初の要素を取得
E lastElement() // 最後の要素を取得

// 要素を削除
E remove(int index) // 指定位置の要素を削除して返す
boolean remove(Object o) // 指定した要素の最初の出現を削除
void clear() // すべての要素を削除

// その他の操作
int size() // 要素数を返す
int capacity() // 現在の容量を返す
void ensureCapacity(int minCapacity) // 少なくとも最小容量を確保する
void trimToSize() // 容量を現在のサイズに調整する
boolean contains(Object o) // 指定した要素が含まれているか確認する
int indexOf(Object o) // 要素が最初に出現するインデックスを返す
番号 メソッドの説明
1 void add(int index, Object element)
このベクターの指定位置に、指定された要素を挿入します。
2 boolean add(Object o) 
指定された要素をこのベクターの末尾に追加します。
3 boolean addAll(Collection c) 
指定された Collection 内のすべての要素を、そのコレクションのイテレータが返す順序で、このベクターの末尾に追加します。
4 boolean addAll(int index, Collection c) 
指定された Collection 内のすべての要素を、このベクターの指定位置に挿入します。
5 void addElement(Object obj) 
指定されたコンポーネントをこのベクターの末尾に追加し、サイズを 1 増やします。
6 int capacity() 
このベクターの現在の容量を返します。
7 void clear() 
このベクターからすべての要素を削除します。
8 Object clone() 
ベクターのコピーを返します。
9 boolean contains(Object elem) 
このベクターが指定された要素を含む場合は true を返します。
10 boolean containsAll(Collection c) 
このベクターが指定された Collection 内のすべての要素を含む場合は true を返します。
11 void copyInto(Object[] anArray) 
このベクターのコンポーネントを指定された配列にコピーします。
12 Object elementAt(int index) 
指定されたインデックスにあるコンポーネントを返します。
13 Enumeration elements() 
このベクターのコンポーネントの列挙を返します。
14 void ensureCapacity(int minCapacity) 
必要に応じてこのベクターの容量を増やし、最小容量パラメータで指定されたコンポーネント数を少なくとも保持できるようにします。
15 boolean equals(Object o) 
指定されたオブジェクトとこのベクターが等しいかどうかを比較します。
16 Object firstElement() 
このベクターの最初のコンポーネント(インデックス 0 にある項目)を返します。
17 Object get(int index) 
ベクター内の指定された位置にある要素を返します。
18 int hashCode() 
このベクターのハッシュコード値を返します。
19 int indexOf(Object elem) 
このベクター内で指定された要素が最初に出現するインデックスを返します。その要素が含まれていない場合は -1 を返します。
20 int indexOf(Object elem, int index) 
指定された要素がこのベクター内で最初に出現するインデックスを返します。index から順方向に検索し、見つからない場合は -1 を返します。
21 void insertElementAt(Object obj, int index) 
指定されたオブジェクトをコンポーネントとして、このベクターの指定された index の位置に挿入します。
22 boolean isEmpty() 
このベクターがコンポーネントを含まないかどうかを調べます。
23 Object lastElement() 
このベクターの最後のコンポーネントを返します。
24 int lastIndexOf(Object elem) 
このベクター内で指定された要素が最後に出現するインデックスを返します。その要素が含まれていない場合は -1 を返します。
25 int lastIndexOf(Object elem, int index) 
指定された要素がこのベクター内で最後に出現するインデックスを返します。index から逆方向に検索し、見つからない場合は -1 を返します。
26 Object remove(int index) 
このベクター内の指定された位置にある要素を削除します。
27 boolean remove(Object o) 
このベクターから指定された要素の最初の一致を削除します。ベクターがその要素を含まない場合は、要素は変更されません。
28 boolean removeAll(Collection c) 
このベクターから、指定された Collection に含まれるすべての要素を削除します。
29 void removeAllElements() 
このベクターからすべてのコンポーネントを削除し、サイズをゼロに設定します。
30 boolean removeElement(Object obj) 
このベクターから、引数の最初(インデックスが最小)の一致項目を削除します。
31 void removeElementAt(int index) 
指定されたインデックスにあるコンポーネントを削除します。
32 protected void removeRange(int fromIndex, int toIndex)
この List から、インデックスが fromIndex(含む)から toIndex(含まない)までの間にあるすべての要素を削除します。
33 boolean retainAll(Collection c) 
このベクター内に、指定された Collection に含まれる要素のみを保持します。
34 Object set(int index, Object element)
このベクター内の指定された位置にある要素を、指定された要素で置き換えます。
35 void setElementAt(Object obj, int index) 
このベクターの指定された index にあるコンポーネントを、指定されたオブジェクトに設定します。
36 void setSize(int newSize) 
このベクターのサイズを設定します。
37 int size() 
このベクター内のコンポーネント数を返します。
38 List subList(int fromIndex, int toIndex) 
この List の部分ビューを返します。要素の範囲は fromIndex(含む)から toIndex(含まない)までです。
39 Object[] toArray()
このベクター内のすべての要素を適切な順序で格納した配列を返します。
40 Object[] toArray(Object[] a) 
このベクター内のすべての要素を適切な順序で格納した配列を返します。返される配列の実行時の型は、指定された配列の型になります。
41 String toString() 
このベクターの文字列表現を返します。各要素の String 表現を含みます。
42 void trimToSize() 
このベクターの容量を、ベクターの現在のサイズに合わせて調整します。

例

以下のプログラムは、このコレクションがサポートするいくつかのメソッドを示しています。

例

import java.util.*;

public class VectorDemo {

   public static void main(String args[]) {
      // initial size is 3, increment is 2
      Vector v = new Vector(3, 2);
      System.out.println("Initial size: " + v.size());
      System.out.println("Initial capacity: " +
      v.capacity());
      v.addElement(new Integer(1));
      v.addElement(new Integer(2));
      v.addElement(new Integer(3));
      v.addElement(new Integer(4));
      System.out.println("Capacity after four additions: " +
          v.capacity());

      v.addElement(new Double(5.45));
      System.out.println("Current capacity: " +
      v.capacity());
      v.addElement(new Double(6.08));
      v.addElement(new Integer(7));
      System.out.println("Current capacity: " +
      v.capacity());
      v.addElement(new Float(9.4));
      v.addElement(new Integer(10));
      System.out.println("Current capacity: " +
      v.capacity());
      v.addElement(new Integer(11));
      v.addElement(new Integer(12));
      System.out.println("First element: " +
         (Integer)v.firstElement());
      System.out.println("Last element: " +
         (Integer)v.lastElement());
      if(v.contains(new Integer(3)))
         System.out.println("Vector contains 3.");
      // enumerate the elements in the vector.
      Enumeration vEnum = v.elements();
      System.out.println("\nElements in vector:");
      while(vEnum.hasMoreElements())
         System.out.print(vEnum.nextElement() + " ");
      System.out.println();
   }
}

上記の例をコンパイルして実行した結果は次のとおりです:

Initial size: 0
Initial capacity: 3
Capacity after four additions: 5
Current capacity: 5
Current capacity: 7
Current capacity: 9
First element: 1
Last element: 12
Vector contains 3.

Elements in vector:
1 2 3 4 5.45 6.08 7 9.4 10 11 12

Java 数据结构Java データ構造

その他の拡張