JavaのVectorクラスの使い方を完全ガイド!初心者でもわかるコレクションの基本
生徒
「先生、Javaで配列みたいに複数のデータを管理したいときに便利なクラスはありますか?」
先生
「Javaではjava.utilパッケージに含まれるVectorクラスを使うことで、簡単にデータをまとめて扱うことができます。」
生徒
「配列とどう違うんですか?」
先生
「配列はサイズを変えられませんが、Vectorはサイズを自動的に調整できるのが大きな特徴です。それでは詳しく見ていきましょう。」
1. Vectorクラスとは?
JavaのVectorクラスは、java.utilパッケージに含まれているコレクションクラスの一つです。可変長の配列として利用でき、要素を追加したり削除したりすると、自動的にサイズが拡張・縮小されます。Javaの初心者が最初に学ぶコレクションとしてよく登場するため、基本を理解しておくと後の学習がスムーズになります。
特にVectorクラスはスレッドセーフな設計になっており、マルチスレッド環境でも安全に利用できるという特徴があります。昔はArrayListよりも多く使われていましたが、現在はシングルスレッド環境ではArrayListが主流です。ただし、歴史的に多くのシステムで使われてきたため、既存コードを読む際にも理解が必要になります。
2. Vectorクラスの基本的な使い方
まずは基本的な宣言方法と要素の追加方法を確認しましょう。Vectorクラスはジェネリクスを使って型を指定できます。
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
Vector<String> fruits = new Vector<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println(fruits);
}
}
[Apple, Banana, Cherry]
このようにVectorはaddメソッドで要素を簡単に追加できます。配列のようにインデックスを使ってアクセスすることも可能です。
3. Vectorと配列の違い
Java初心者が混乱しやすいのは「配列とVectorの違い」です。配列は宣言時にサイズを決める必要がありますが、Vectorは必要に応じてサイズが拡張されるため、あらかじめ容量を気にする必要がありません。また、配列はスレッドセーフではありませんが、Vectorはメソッドが同期化されているため、複数スレッドで同時に操作しても安全に動作します。
ただし、その分オーバーヘッドがあるため、性能重視の場面ではArrayListが選ばれることも多いです。つまり、用途に応じて使い分けるのが大切です。
4. よく使うメソッド
Vectorクラスでよく使われるメソッドをいくつか紹介します。
add(E e):要素を追加するget(int index):指定したインデックスの要素を取得するremove(int index):指定した位置の要素を削除するsize():要素数を取得するisEmpty():空かどうかを判定する
import java.util.Vector;
public class VectorMethods {
public static void main(String[] args) {
Vector<Integer> numbers = new Vector<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
System.out.println("2番目の要素: " + numbers.get(1));
numbers.remove(0);
System.out.println("削除後: " + numbers);
System.out.println("サイズ: " + numbers.size());
System.out.println("空かどうか: " + numbers.isEmpty());
}
}
2番目の要素: 20
削除後: [20, 30]
サイズ: 2
空かどうか: false
5. VectorとArrayListの比較
現代のJavaプログラミングでは、ArrayListとVectorを比較することがよくあります。ArrayListは同期化されていないため軽量で高速ですが、マルチスレッド環境で使う場合は外部で同期処理を行う必要があります。一方、Vectorは標準で同期化されているため、安全性は高いですがパフォーマンスはやや劣ります。
したがって、初心者が学ぶ際には「VectorはスレッドセーフなArrayListのようなもの」と覚えておくと理解しやすいでしょう。
6. ループ処理での利用
Vectorはループ処理でも便利に使えます。拡張for文やイテレータを使うことで、簡単に全要素を処理することができます。
import java.util.Vector;
public class VectorLoop {
public static void main(String[] args) {
Vector<String> animals = new Vector<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Bird");
for (String animal : animals) {
System.out.println(animal);
}
}
}
Dog
Cat
Bird
このようにVectorは初心者でも扱いやすい構造になっています。
7. 実際の活用シーン
Vectorは最新のプロジェクトで新しく使われることは少なくなっていますが、既存の業務システムやライブラリの中にはまだ利用されているものが多くあります。そのため、Javaの基礎を学ぶ上でVectorを理解しておくことはとても大切です。例えば、マルチスレッド環境で安全にリストを扱いたい場合や、レガシーコードをメンテナンスする場合に役立ちます。
また、Javaの歴史を知る意味でもVectorを学ぶことで、ArrayListや他のコレクションが登場した背景を理解でき、より深い学習につながります。