Vector と Enumaration
Vectorクラスの利用法と配列との比較、
Enumarationインターフェイスの意味を解説します。
java.utilパッケージの Vectorクラスは、
複数のオブジェクトを集め、
インデックス番号で操作できるようにしたクラスです。
目的や利用法は配列と似ています。
ただし、以下のような大きな相違点があります。
-
配列は同じ種類のデータ(原始型もしくはクラスのオブジェクト)の集まりで
なくてはいけません。これに対して Vectorクラスの要素は、異なるクラスの
オブジェクトが混在してかまいません。
-
配列は生成した時点でサイズを指定する必要があり、途中でサイズを変更できません。
これに対して Vectorクラスは途中でサイズを変更することができます。
-
配列では一度定まったインデックスの値は固定です。
これに対して Vectorクラスは順番の途中に新しい要素を挿入したり、
不要な要素を途中から削除して「順番を詰める」ことができます。
このように、Vectorは配列に比べて柔軟な取り扱いが可能です。
また、ファイルから不特定の個数のデータを読み込むような処理の場合は、
配列ではうまく処理できないので Vectorが利用されます。
理論的には配列の機能をすべて Vectorで記述することもできますが、
それはあまり現実的ではないでしょう。
当然のことながら処理の効率の面では Vectorは配列に劣ります。
また、プログラム内の記述も配列に比べて煩雑になります。
同じような機能を配列と Vectorで記述した例を比較してみましょう。
//配列
Point points[] = new Point[10];
for( int i=0; i<10; i++ )
points[i] = new Point( i, 0 );
System.out.println( points[8].toString() );
//Vector
Vector vector = new Vector();
for( int i=0; i<10; i++ )
vector.addElement( new Point( i, 0 ) );
System.out.println( vector.ElementAt(8).toString() );
Enumerationインターフェイスは、単連結リストのデータ構造を提供します。
具体的には nextElement()メソッドと hasMoreElement()メソッドを実装する
ことを要求しています。
Vectorも Enumerationを実装したオブジェクトを内部で利用しています。
Propetiesクラスのキー名のリストも Enumerationを実装したオブジェクトと
して返されます。