Java Vectorの理解:使い方、特徴、ArrayListとの比較
Java Vectorの理解
VectorクラスはListインターフェースを実装し、ArrayListと同様にサイズ可変の配列を提供します。しかしArrayListとは異なり、Vectorのすべての変更操作は同期化されており、本質的にスレッドセーフですが、シングルスレッド環境ではパフォーマンスが低下する可能性があります。
Java Vector と ArrayList の比較
ArrayListとVectorはどちらも動的配列を提供しますが、並行処理の扱いが異なります:
- Vector:各メソッド呼び出しを同期化し、実行前にインスタンスのロックを取得します。
- ArrayList:デフォルトでは非同期です。必要に応じて
Collections.synchronizedList()でスレッドセーフにできます。
操作ごとのロックにより、Vectorはマルチスレッド環境でオーバーヘッドが発生する可能性があります。一方、スレッドセーフティが不要な場合はArrayListの方が通常高いパフォーマンスを発揮します。
ArrayListを推奨します。レガシーコードで必要な場合や、追加のラッパーなしで組み込み同期が必要な場合のみVectorを使用してください。Vectorの作成
ジェネリクスを指定してVectorをインスタンス化できます:
Vector<Type> vector = new Vector<>();
例:
// Integer型のVector
Vector<Integer> numbers = new Vector<>();
// String型のVector
Vector<String> words = new Vector<>();
Vectorの主要メソッド
VectorクラスはArrayListと同様に完全なリスト操作セットを提供します。よく使用されるメソッドには以下があります:
add(E element)- 要素を末尾に追加add(int index, E element)- 指定位置に挿入addAll(Collection<? extends E> c)- 複数要素を一括追加get(int index)- インデックスで要素を取得remove(int index)- インデックスで要素を削除clear()- すべての要素を削除size()- 現在の要素数を取得contains(Object o)- 要素の存在確認toArray()- 配列に変換toString()- 文字列表現を取得set(int index, E element)- 指定位置の要素を置換
Vectorへの要素追加
add(element)- 要素を末尾に追加add(index, element)- 指定インデックスに挿入addAll(vector)- 他のVectorの全要素を追加
例:
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> mammals = new Vector<>();
mammals.add("Dog");
mammals.add("Horse");
mammals.add(2, "Cat");
System.out.println("Vector: " + mammals);
Vector<String> animals = new Vector<>();
animals.add("Crocodile");
animals.addAll(mammals);
System.out.println("New Vector: " + animals);
}
}
出力
Vector: [Dog, Horse, Cat] New Vector: [Crocodile, Dog, Horse, Cat]
Vector要素へのアクセス
get(index)- インデックスで要素を取得iterator()- 順次アクセス用のイテレータを取得
例:
import java.util.Iterator;
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals = new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
String element = animals.get(2);
System.out.println("インデックス2の要素: " + element);
Iterator<String> iter = animals.iterator();
System.out.print("Vector: ");
while(iter.hasNext()) {
System.out.print(iter.next() + ", ");
}
}
}
出力
インデックス2の要素: Cat Vector: Dog, Horse, Cat,
Vectorからの要素削除
remove(index)- 指定位置の要素を削除clear()- 全要素を効率的に削除
例:
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals = new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
System.out.println("初期Vector: " + animals);
String removed = animals.remove(1);
System.out.println("削除された要素: " + removed);
System.out.println("新しいVector: " + animals);
animals.clear();
System.out.println("clear()後のVector: " + animals);
}
}
出力
初期Vector: [Dog, Horse, Cat] 削除された要素: Horse 新しいVector: [Dog, Cat] clear()後のVector: []
その他のVectorメソッド
| メソッド | 説明 |
|---|---|
set(int index, E element) | 指定位置の要素を置換 |
size() | 要素数を返す |
toArray() | 内容を配列に変換 |
toString() | Vectorの文字列表現 |
contains(Object o) | 指定要素が含まれるか確認 |
Java
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java if…elseをマスター:制御フローを徹底解説
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Java 8 完全クイックリファレンス:全新機能を網羅した決定版ガイド