what is java vector java vector class tutorial with examples
このチュートリアルでは、Javaのベクターデータ構造について例を挙げて説明します。プログラムでJavaベクターを作成、初期化、ソート、および使用する方法を学習します。
ベクトルは、それ自体で拡大または縮小できる動的配列として定義できます。つまり、ベクトルは、要素が追加されると拡大し、要素が削除されると縮小します。
この動作は、静的な配列の動作とは異なります。ただし、配列と同様に、整数インデックスを使用してベクトル要素にアクセスできます。
=> ここでJavaトレーニングチュートリアルのA〜Zを確認するには、ここをクリックしてください。
ベクトルは、別の動的配列データ構造に類似していると見なすことができます。 以下の2つの違いを除いて、ArrayList:
- ベクターは同期されています。つまり、ベクター内のすべてのメソッドは「同期済み」とマークされているため、メソッドが呼び出されると、前の呼び出しが終了しない限り、同じメソッドを呼び出すことはできません。
- ベクトルクラスには、コレクションフレームワークの一部ではなく、そのレガシーメソッドである多くのメソッドがあります。
学習内容:
Javaベクトルクラス
Vectorクラスは「 java.util 」パッケージを作成し、リストインターフェイスを実装します。ベクトルは、オブジェクトの配列またはオブジェクトのベクトルです。
Vectorクラスのクラス宣言を以下に示します。
public class Vector extends Object implements List, Cloneable, Serializable
上に示したように、Vectorクラスは「 java.lang.object 」であり、List、Cloneable、Serializableインターフェイスを実装しています。
Javaでベクターを作成する方法は?
次のVectorコンストラクターメソッドのいずれかを使用して、Vectorオブジェクトを作成できます。
新入生のための品質保証面接の質問と回答
コンストラクタープロトタイプ | 説明 | |
---|---|---|
晴れ | ボイドクリア() | その要素のベクトルをクリアします。 |
ベクター() | これは、Vectorクラスのデフォルトのコンストラクターです。サイズ10の空のベクトルを作成します。 | |
vector(int initialCapacity) | このオーバーロードされたコンストラクターは、容量= initialCapacityで空のVectorオブジェクトを作成します。 | |
vector(int initialCapacity、intcapacityIncrement) | このコンストラクターメソッドは、initialCapacityとcapacityIncrementを指定して空のVectorオブジェクトを作成します。 | |
ベクター(コレクションc) | Vectorオブジェクトは、指定されたコレクションの初期要素を使用して作成されます。 |
Vectorオブジェクトを初期化するための各コンストラクターを見てみましょう。
ベクトルを初期化する
(i)Vector()
これは、Vectorクラスのデフォルトのコンストラクターです。このコンストラクターを呼び出すと、デフォルトサイズ10のVectorオブジェクトが作成されます。
このメソッドの一般的な構文は次のとおりです。
ベクトルオブジェクト=新しいVector();
例えば、
Vector vec1 = new Vector ();
上記のステートメントは、サイズ10の新しいベクトル「vec1」を作成します。
(ii)Vector(int initialCapacity)
Vectorクラスのオーバーロードされたコンストラクターは、引数として「initialCapacity」を受け入れます。このコンストラクターは、指定された容量のVectorオブジェクトを作成します。
メソッドの一般的な構文は次のとおりです。
ベクトルオブジェクト=新しいベクトル(initialCapacity);
例えば、
Vector vec1 = new Vector (10);
上記のプログラミングステートメントは、容量が10のVectorオブジェクト「vec1」を作成します。つまり、このVectorは最大10個の要素を格納できます。
(iii)Vector(int initialCapacity、intcapacityIncrement)
これは、Vectorクラスのさらに別のオーバーロードされたコンストラクターであり、指定された初期容量と容量の増分を使用してVectorオブジェクトを作成します。
このメソッドの一般的な構文は次のとおりです。
ベクトルオブジェクト=新しいベクトル(initialCapacity、capacityIncrement);
例えば、
Vector vec1 = new Vector(5,10);
上記のステートメントでは、ベクトルの初期容量は5で、増分は10です。これは、6がth要素がベクトルに挿入されると、ベクトルの容量は15(5 + 10)に増加します。同様に、16th要素が挿入されると、ベクトルのベクトル容量は25(15 +10)に拡張されます。
(iv)Vector(Collection c)
Vectorクラスの最後のオーバーロードされたコンストラクターは、事前定義されたコレクションを引数として受け取り、このコレクションのすべての要素を要素として持つVectorを作成します。
一般的な構文は次のとおりです。
ベクトルオブジェクト=新しいベクトル(コレクションc);
例えば、
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
上記のステートメントは、初期要素が{1,2,3,4,5}であるベクトル「vec1」を作成します。
これらすべての説明を念頭に置いておくと、これらのコンストラクターをよりよく理解するためのベクタープログラムを実装できます。
Javaのベクトルメソッド
以下は、JavaのVectorクラスでサポートされているメソッドです。
メソッド名 | プロトタイプ | 説明 |
---|---|---|
追加 | ブールadd(E e) | 指定された要素をベクトルの最後に追加します。 |
Void add(int index、E element) | 指定されたインデックスでベクトルに要素を追加します。 | |
全て追加する | ブールaddAll(Collection c) | 指定されたコレクションのすべての要素をベクトルの最後に追加します。 |
ブールaddAll(int index、Collection c) | 指定されたコレクション内のすべての要素を指定されたインデックスに追加します。 | |
addElement | void addElement(E obj) | ベクトルサイズを大きくして、指定した要素をベクトルの最後に追加します。 |
容量 | 整数容量() | ベクトルの現在の容量を返します。 |
クローン | オブジェクトclone() | ベクトルのクローンを作成します。 |
含まれています | ブールcontains(Object o) | ベクトルに指定された要素が含まれているかどうかを確認します。 |
containsAll | ブールcontainsAll(Collection c) | ベクトルに、指定されたコレクションに存在するすべての要素が含まれているかどうかを確認します。 |
copyInto | Void copyInto(Object () anArray) | ベクトル要素を指定された配列にコピーします。 |
ElementAt | E ElementAt(int index) | 指定されたインデックスのベクトル要素を返します。 |
要素 | Enumerationelements() | ベクトルの列挙されたコンポーネントを返します。 |
sureCapacity | ボイドensureCapacity(int minCapacity) | 指定された最小容量を満たすようにベクトルの容量を増やします。 |
メソッド名 | プロトタイプ | 説明 |
---|---|---|
insertElementAt | Void insertElementAt(E obj、int index) | 指定されたオブジェクトを、指定されたインデックスのベクトルに挿入します。 |
等しい | ブール値equals(Object o) | 現在のベクトルを指定されたベクトルと比較して、それらが等しいかどうかを確認します。 |
firstElement | E firstElement() | インデックス0のベクトルの最初の要素を返します。 |
取得する | E get(int index) | 指定されたインデックスにあるベクトル内の要素を返します。 |
ハッシュコード | int hashCode() | Vectorのハッシュコード値を返します。 |
の指標 | int indexOf(Object o) | ベクトル内の指定された要素の最初の出現のインデックスを検索します。要素がベクトルに存在しない場合は-1。 |
int indexOf(Object o、int index) | 指定されたインデックスから指定された要素を順方向にベクトルで検索します。要素が見つかった場合はインデックスを返し、要素が見つからなかった場合は-1を返します。 | |
isEmpty | ブールisEmpty() | ベクトルが空かどうかを確認します。 |
イテレータ | Iteratoriterator() | ベクトルの要素をトラバースするために使用されるイテレータを返します。 |
lastElement | E lastElement() | ベクトルの最後の要素を返します。 |
lastIndexOf | Int lastIndexOf(Object o) | 指定された要素の最後の出現をベクトルで検索してインデックスを返すか、要素が見つからない-1を返します。 |
Int lastIndexOf(Object o、int index) | 指定されたインデックスから逆方向に指定された要素の最後の出現の検索を開始します。要素が見つかった場合はインデックスを返し、それ以外の場合は-1を返します。 | |
listIterator | ListIteratorlistIterator() | ベクトル要素のリストイテレータを返します。 |
ListIteratorlistIterator(int index) | 指定されたインデックスから始まるベクトル要素のリストイテレータを返します。 |
メソッド名 | プロトタイプ | 説明 |
---|---|---|
removeRange | protected void removeRange(int fromIndex、int toIndex) | fromIndex(包括的)からtotoIndex(排他的)までの指定された範囲内のベクトルからすべての要素を削除します。 |
削除する | E remove(int index) | 指定されたインデックスの要素をベクトルから削除します。 |
ブール値remove(Object o) | 指定された要素の最初の出現をベクトルから削除します。要素が存在しない場合、ベクトルには何も起こりません | |
すべて削除する | ブール値removeAll(Collection c) | 指定されたコレクションに存在するすべての要素をベクターから削除します。 |
void removeAll Elements() | すべてのベクトル要素を削除して、サイズをゼロにします。 | |
removeElement | ブール値removeElement(Object obj) | 指定された要素の最初の出現をベクトルから削除します。 |
void removeElementAt(int index) | 指定されたインデックスの要素を削除します。 | |
保持すべて | ブールretainAll(Collection c) | 「removeAll」とは対照的に、メソッドretainAllは、指定されたコレクション内の要素と一致するVector内の要素を保持します。 |
セットする | E set(int index、E element) | 提供された新しい要素を使用して、指定されたインデックスに値を設定します。 |
ボイドセットElementAt(E obj、int index) | 指定された要素を指定されたインデックスに設定します。 | |
setSize | Void setSize(int newSize) | このベクトルに指定されたサイズを設定します。 |
サイズ | int size() | このベクトルの要素数またはベクトルの長さを返します。 |
サブリスト | ListsubList(intfromIndex、inttoIndex) | fromIndexからtoIndexまでの範囲のベクトルのビューまたはサブリストを返します。 |
toArray | Object () toArray() | 指定されたベクトルを、指定された順序ですべてのベクトル要素を含む配列に変換します。 |
T () toArray(T () a) | すべてのベクトル要素を含む指定された型の配列を返します。 | |
toString | 文字列toString() | ベクトルの文字列表現を返します。 |
trimToSize | void trimToSize() | 現在のサイズに対応するようにベクトルをトリミングします。 |
ベクトルの実装
次のJavaプログラムは、上記のすべてのコンストラクタメソッドの使用法を示しています。
import java.util.*; public class Main{ public static void main(String() args) { //Create vectors v1, v2,v3 and v4 Vector v1 = new Vector(); //a vector with default constructor Vector v2 = new Vector(20); // a vector of given Size //initialize vector v2 with values v2.add(10); v2.add(20); v2.add(30); Vector v3 = new Vector(30, 10); // a vector of given Size and Increment // create a vector v4 with given collection List aList = new ArrayList(); aList.add('one'); aList.add('two'); Vector v4 = new Vector(aList); //print contents of each vector System.out.println('Vector v1 Contents:' + v1); System.out.println('Vector v2 Contents:' + v2); System.out.println('Vector v3 Contents:' + v3); System.out.println('Vector v4 Contents:' + v4); } }
出力:
上記のプログラムには、4つのベクトルが含まれています。最初のv1は、デフォルトのコンストラクターで作成されます。 2番目のVectorv2は、初期容量を20として作成されます。次に、いくつかの要素がv2に追加されます。 3番目のベクトルは、初期容量が30、増分が10で作成されます。
次に、ArrayListを作成し、ArrayListを引数として4番目のVectorv4を作成します。最後に、これらの各ベクターの内容を表示します。
4番目のVectorv4の内容に注意してください。引数としてArrayListを指定したので、ArrayListの内容はv4の内容になります。
完全なベクトルの例
それでは、さらに別のプログラムを実装しましょう。 ベクトルの作成、それに要素の追加、およびその内容の表示を示します。
import java.util.*; public class Main { public static void main(String args()) { //Create an empty Vector of even numbers Vector evenVector= new Vector (); //Add elements in the vector evenVector.add(2); evenVector.add(4); evenVector.add(6); evenVector.add(8); evenVector.add(10); evenVector.add(12); evenVector.add(14); evenVector.add(16); //Display the vector System.out.println('Vector evenVector contents: ' +evenVector); //delete the first occurence of an element 4 using remove method System.out.println('
Firstoccurence of element 4 removed: '+evenVector.remove((Integer)4)); //Display the vector System.out.println('
Vector contents after remove operation: ' +evenVector); //Remove the element at index 4 & display the vector System.out.println('
Remove element at index 4: ' +evenVector.remove(4)); System.out.println('
Vector contents after remove: ' +evenVector); //hashcode for the vector System.out.println('
Hash code of the vector = '+evenVector.hashCode()); //Get the element at index 1 System.out.println('
Element at index 1 is = '+evenVector.get(1)); } }
出力:
別のベクトルの例を見てみましょう。このプログラムでは、 文字列ベクトルを使用する 。要素を追加してこのベクトルを操作し、そのサイズと容量を出力します。
import java.util.*; public class Main { public static void main(String args()) { // create a vector with initial capacity = 2 Vector fruits_vec = new Vector(2); //add elements to the vector fruits_vec.addElement('Grapes'); fruits_vec.addElement('Melon'); fruits_vec.addElement('Kiwi'); fruits_vec.addElement('Apple'); //print current size and capacity of the vector System.out.println('Vector Size: '+fruits_vec.size()); System.out.println('Default Vector capacity increment: '+fruits_vec.capacity()); //add more elements to the vector fruits_vec.addElement('Orange'); fruits_vec.addElement('Mango'); fruits_vec.addElement('Fig'); //print current size and capacity again System.out.println('Vector Size after addition: '+fruits_vec.size()); System.out.println('Vector Capacity after increment: '+fruits_vec.capacity()); //print vector elements Enumeration fruits_enum = fruits_vec.elements(); System.out.println('
Vector Elements are:'); while(fruits_enum.hasMoreElements()) System.out.print(fruits_enum.nextElement() + ' '); } }
出力:
ベクトルを並べ替える
特定の順序に従ってベクトルを並べ替えることもできます。ベクターをソートするには、JavaコレクションフレームワークのCollections.sort()メソッドを使用する必要があります。
次の例は、ベクトルの並べ替えを示しています。
import java.util.*; public class Main { public static void main(String arg()) { //Create an empty vector Vector oddVector = new Vector(); //Add elements to the vector oddVector.add(1); oddVector.add(11); oddVector.add(7); oddVector.add(3); oddVector.add(5); //print the vector elements System.out.println('Vector elements: '+oddVector); //sort vector using Collections.sort method Collections.sort(oddVector); //print sorted vector System.out.println('Vector elements after sorting: '+oddVector); } }
出力:
上記のプログラムは、奇数のベクトルを作成します。次に、Collections.sort()メソッドを使用して、Vectorがソートされます。
2D(2次元)ベクトル
2Dベクトルは、各要素をベクトルとして持つベクトルです。 「VectorofVectors」とも呼ばれます。
以下の例は、2Dベクトルを示しています。
import java.util.*; public class Main { public static void main(String args()) { //define and initialize a vector Vector inner_vec = new Vector(); inner_vec.add('Software'); inner_vec.add('Testing'); inner_vec.add('Java'); inner_vec.add('Tutorials'); //define another vector and add first vector to it. Vector outer_vec = new Vector(); outer_vec.add(inner_vec); String str; //display the contents of vector of vectors System.out.println('Contents of vector of vectors:'); for(int i=0;i 出力:

上記のプログラムでは、4つの要素のベクトルがあります。次に、別のベクトルを宣言し、前のベクトルを要素として2番目のベクトルに追加します。ベクトルの要素にアクセスする方法に注意してください。 forループを形成すると、外側のベクトルの最初の要素(インデックス0)が最初のベクトルまたは内側のベクトルであると結論付けることができます。
したがって、ループでは、外側のベクトルのインデックスを0のままにし、内側のベクトルをループしてすべての要素を表示します。
ベクトルを配列に変換
ベクトルを配列に変換する次の例を考えてみましょう。ベクトルを配列に変換するには、Vectorクラスの「toArray」メソッドを使用します。
次のプログラミング例では 、文字列Vectorを宣言し、それに要素を追加します。次に、VectorクラスのtoArrayメソッドを使用して、文字列配列オブジェクトを引数として渡すことにより、VectorをString配列に変換します。
import java.util.Vector; public class Main { public static void main(String() args) { // Create a Vector of String elements Vector color_vector = new Vector(); // Add elements to Vector color_vector.add('Violet'); color_vector.add('Indigo'); color_vector.add('Blue'); color_vector.add('Green'); color_vector.add('Yellow'); color_vector.add('Orange'); color_vector.add('Red'); //Convert Vector to String Array using toArray method String() colorsArray = color_vector.toArray(new String(color_vector.size())); //print Array Elements System.out.println('String Array Elements :'); for(String val:colorsArray){ System.out.print(val + ' '); } } }
出力:

ベクトルと配列
以下に、ベクトルと配列の違いのいくつかを示します。
ベクター アレイ 容量が増加したときに追加のストレージを予約します。 追加のストレージを予約しません。 ベクトルは動的であり、要素が追加または削除されると、そのサイズは拡大および縮小します。 配列は静的であり、宣言されるとそのサイズは固定されたままになります。 ベクトルはオブジェクトのみを格納できます。 配列には、オブジェクトだけでなくプリミティブ型も格納できます。 サイズを決定するためのsize()メソッドを提供します。 長さを決定するためのlengthプロパティを提供します。 概念の次元はありませんが、通常は2Dベクトルと呼ばれるベクトルのベクトルとして作成できます。 配列は次元をサポートします。 ベクトルが同期されます。 アレイは同期されていません。 ベクトルは配列よりも遅いです。 配列の方が高速です。 ジェネリックスをサポートすることにより、型の安全性を確保します。 一般的なサポートはありません。
ベクトルと配列リスト
このセクションでは、JavaのVectorとArrayListの違いについて説明します。
ベクター 配列リスト ベクトルには増分サイズがあり、これを使用してベクトルサイズを増やすことができます。 ArrayListは増分サイズを提供しません。 Javaの初期バージョン(JDK 1.0バージョン)以降に存在します。 JDK1.2以降Javaで導入されました VectorはJavaのレガシークラスです。 ArrayListは、Javaコレクションフレームワークの一部です。 ベクトルは、容量に達するとサイズが2倍になります。 ArrayListは、容量に達するとサイズが半分になります。 ベクトルメソッドは同期されます。 ArrayListは同期されていません。 Vectorは、トラバースに列挙子と反復子を使用します。 ArrayListはイテレータのみを使用します。 ベクトル演算は遅くなります。 ArrayListの方が高速です。 Vectorはスレッドセーフです。つまり、複数のスレッドからVectorを使用することが許可されており、安全です。 ArrayListはスレッドセーフではありません。
よくある質問
Q#1)Javaのベクターとは何ですか?
回答: Javaでは、Vectorはオブジェクトの拡張可能な配列として定義できます。配列と同様に、ベクトル要素にもインデックスを使用してアクセスできます。
Q#2)ベクターはJavaで注文されていますか?
回答: はい。ベクトルは順序付けられ、要素の挿入順序を維持します。
Q#3)JavaではVectorはスレッドセーフですか?
回答: はい。 Javaでは、Vectorクラスはスレッドセーフです。 Vectorクラスは同期されているため、スレッドセーフになります。つまり、複数のスレッドからVectorクラスを使用でき、安全です。
7zファイルマックとは何ですか
Q#4)Javaでベクトルを使用するのはなぜですか?
回答: VectorがJavaで使用される最も重要な理由は、Vectorが自動的に拡大および縮小することです。それらは動的であるため、配列よりも優先されます。
Q#5)どちらが良いですか– ArrayListまたはvector?
回答: Vectorは同期されているため、パフォーマンス面ではArrayListがVectorと比較して高速であり、低速になります。
結論
このチュートリアルでは、JavaのVectorデータ構造から始めました。ベクトルは、使い慣れたインデックスを使用してベクトル要素にアクセスする配列とほぼ同じです。ベクトルは動的配列と呼ばれ、配列とは異なり、ベクトルのサイズは自動的に拡大および縮小します。
ベクトルには、将来の追加のために追加のストレージを作成および予約するために使用できる容量およびインクリメント機能もあります。 Vectorは、Javaのjava.utilパッケージのレガシークラスであり、同期され、スレッドセーフです。
したがって、動的サイズが必要な場合や、マルチスレッド環境で作業している場合は、ベクトルを優先する必要があります。
=> 独占的なJavaトレーニングチュートリアルシリーズについては、こちらをご覧ください。
推奨読書