Java Vector クラス
Vector クラスは動的配列を実装しています。ArrayList と非常に似ていますが、両者には違いがあります:
| 特性 | Vector | ArrayList |
|---|---|---|
| 同期性 | 同期(スレッドセーフ) | 同期しない |
| 性能 | 遅い | 速い |
| 容量拡張の増分 | 指定可能 | 固定(50%) |
| イテレータ | fail-fast | fail-fast |
| 導入バージョン | Java 1.0 | Java 1.2 |
特徴:
同期:Vector はスレッドセーフであり、すべてのメソッドが同期されています。
動的拡張:要素数が現在の容量を超えると自動的に増加します。
レガシークラス:現在でも使用可能ですが、通常は ArrayList の使用が推奨されます。
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) // 要素が最初に出現するインデックスを返す
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();
}
}
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 データ構造