logo

Javaのベクトルクラス

Vector クラスは、オブジェクトの拡張可能な配列を実装します。ベクターは従来のクラスに分類されますが、コレクションと完全に互換性があるようになりました。で見つかります java.util パッケージ そして実装してください リスト インターフェイスなので、次に示すように List インターフェイスのすべてのメソッドを使用できます。

Javaのベクトルクラス

  • Vector は動的配列を実装しているため、必要に応じて拡大または縮小できます。配列と同様に、整数インデックスを使用してアクセスできるコンポーネントが含まれています。
  • それらは非常によく似ています 配列リスト ただし、Vector は同期されており、コレクション フレームワークに含まれていないレガシー メソッドがいくつかあります。
  • また、ArrayList と同様に挿入順序も維持します。ただし、このままでは非スレッド環境で使用されることはほとんどありません。 同期した このため、要素の追加、検索、削除、更新のパフォーマンスが低下します。
  • Vector クラスによって返されるイテレータはフェイルファストです。同時変更の場合、失敗してスローされます。 ConcurrentModificationException。

構文:



public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable>

ここ、 そして 要素のタイプです。

  • 伸びる 抽象リスト そして実装する リスト インターフェース。
  • Serializable、Cloneable、Iterable、Collection、List、RandomAccess インターフェイスを実装します。
  • 直接知られているサブクラスは次のとおりです。 スタック

ベクトル容量の増加に関する重要な点は次のとおりです。

増分が指定されている場合、Vector は各割り当てサイクルでそれに応じて拡張されます。それでも、増分が指定されていない場合、ベクトルの容量は各割り当てサイクルで 2 倍になります。 Vector では、次の 3 つの保護されたデータ メンバーが定義されています。

  • int 容量増加分: 増分値が含まれます。
  • int要素数: 現在ベクトルに格納されている要素の数。
  • オブジェクト要素データ[]: ベクトルを保持する配列が格納されます。

ベクトルの宣言における一般的なエラーは次のとおりです。 続く :

  • ベクトルは IllegalArgumentException 定義されたベクトルの InitialSize が負の場合。
  • 指定されたコレクションが null の場合、スローされます NullPointerException

コンストラクター

1. ベクトル(): 初期容量が 10 のデフォルトのベクトルを作成します。

Vector v = new Vector();>

2. ベクトル(int サイズ): 初期容量がサイズで指定されるベクトルを作成します。

Vector v = new Vector(int size);>

3. ベクトル(int サイズ、int incr): 初期容量が size で指定され、増分が incr で指定されるベクトルを作成します。ベクトルのサイズが上方に変更されるたびに割り当てる要素の数を指定します。

スクロールホイールが機能しない
Vector v = new Vector(int size, int incr);>

4. ベクトル (コレクション c): コレクション c の要素を含むベクトルを作成します。

Vector v = new Vector(Collection c);>

Vector クラスのメソッド

方法

説明

add(そしてそして) 指定された要素をこの Vector の末尾に追加します。
add(int インデックス, E 要素) 指定された要素をこの Vector 内の指定された位置に挿入します。

addAll(コレクション

E> c) を拡張します

指定されたコレクション内のすべての要素を、指定されたコレクションのイテレータによって返される順序でこの Vector の末尾に追加します。

addAll(int インデックス,

コレクション c)

指定された Collection 内のすべての要素を、この Vector の指定された位置に挿入します。
addElement(E obj) 指定されたコンポーネントをこのベクトルの末尾に追加し、サイズを 1 つ増やします。
容量() このベクトルの現在の容量を返します。
クリア() この Vector からすべての要素を削除します。
クローン() このベクターのクローンを返します。
contains(オブジェクト o) このベクトルに指定された要素が含まれている場合は true を返します。
すべてを含む(コレクション c) この Vector に指定された Collection 内のすべての要素が含まれている場合は true を返します。
copyInto ( オブジェクト [ ] anArray ) このベクトルのコンポーネントを指定された配列にコピーします。
elementAt(int インデックス) 指定されたインデックスにあるコンポーネントを返します。
要素() このベクトルのコンポーネントの列挙を返します。
ensureCapacity(int minCapacity) 必要に応じて、このベクトルの容量を増やして、最小容量引数で指定されたコンポーネントの数以上を保持できるようにします。
等しい(オブジェクト o) 指定されたオブジェクトとこのベクターが等しいかどうかを比較します。
firstElement() このベクトルの最初のコンポーネント (インデックス 0 の項目) を返します。

forEach(消費者

スーパーE>アクション)

ls コマンド、Linux
すべての要素が処理されるか、アクションが例外をスローするまで、Iterable の各要素に対して指定されたアクションを実行します。
get(int インデックス) この Vector 内の指定された位置にある要素を返します。
ハッシュコード() このベクターのハッシュ コード値を返します。
IndexOf(オブジェクトo)

このベクトル内で指定された要素が最初に出現するインデックスを返します。

このベクトルに要素が含まれていない場合は -1。

IndexOf(オブジェクト o, int インデックス) このベクトル内で指定された要素が最初に出現するインデックスを返し、インデックスから前方に検索します。要素が見つからない場合は -1 を返します。
insertElementAt(E obj, int インデックス) 指定されたオブジェクトをコンポーネントとしてこのベクトルの指定されたインデックスに挿入します。
isEmpty() このベクトルにコンポーネントがないかどうかをテストします。
イテレータ() このリスト内の要素に対する反復子を適切な順序で返します。
lastElement() ベクトルの最後のコンポーネントを返します。
lastIndexOf(オブジェクトo)

このベクトル内で指定された要素が最後に出現したインデックスを返します。

このベクトルに要素が含まれていない場合は -1。

lastIndexOf(オブジェクト o, int インデックス) インデックスから逆方向に検索して、このベクトル内で指定された要素が最後に出現したインデックスを返します。要素が見つからない場合は -1 を返します。
listIterator() このリスト内の要素に対するリスト反復子を (適切な順序で) 返します。
listIterator(int インデックス)

このリスト内の要素に対するリスト反復子を (適切な順序で) 返します。

リスト内の指定された位置から開始します。

削除(int インデックス) この Vector 内の指定された位置にある要素を削除します。
削除(オブジェクトo) この Vector 内で最初に出現した指定された要素を削除します。ベクターに要素が含まれていない場合、その要素は変更されません。
すべて削除(コレクション c) 指定されたコレクションに含まれるすべての要素をこの Vector から削除します。
削除すべての要素() このベクトルからすべてのコンポーネントを削除し、そのサイズを 0 に設定します。
削除要素(オブジェクトオブジェクト) このベクトルから最初に出現した (インデックスが最も低い) 引数を削除します。
RemoveElementAt(int インデックス) 指定されたインデックスにあるコンポーネントを削除します。
RemoveIf(述語フィルター) 指定された述語を満たすこのコレクションの要素をすべて削除します。

RemoveRange(int fromIndex,

int toIndex)

このリストから、インデックスが fromIndex (両端を含む) と toIndex (両端を含む) の間にあるすべての要素を削除します。
replaceAll(UnaryOperator 演算子)このリストの各要素を、その要素に演算子を適用した結果で置き換えます。
全て保持(コレクションc) 指定されたコレクションに含まれるこのベクターの要素のみを保持します。
set(int インデックス, E 要素) この Vector 内の指定された位置にある要素を、指定された要素に置き換えます。
setElementAt(E obj, int インデックス) このベクトルの指定されたインデックスにあるコンポーネントを、指定されたオブジェクトに設定します。
setSize(int newSize) このベクトルのサイズを設定します。
サイズ() このベクトル内のコンポーネントの数を返します。
ソート(コンパレータc) 指定された Comparator によって引き起こされる順序に従ってこのリストを並べ替えます。
スプリッテレータ() このリスト内の要素に対して遅延バインディングおよびフェイルファストの Spliterator を作成します。
subList(int fromIndex, int toIndex) この List の fromIndex (これを含む) と toIndex (これを含まない) の間の部分のビューを返します。
toArray() この Vector のすべての要素を正しい順序で含む配列を返します。
toArray(T[] a) この Vector のすべての要素を正しい順序で含む配列を返します。返される配列のランタイム型は、指定された配列のランタイム型です。
toString() 各要素の文字列表現を含む、この Vector の文字列表現を返します。
トリムサイズ() このベクトルの容量をトリミングして、ベクトルの現在のサイズにします。

このクラスのメソッドに到達する前に、まず Vector を作成して使用する方法について説明し、実装しましょう。

PythonはJSONをファイルに保存します

例:

ジャワ
// Java Program to Demonstrate Working of Vector // Via Creating and Using It // Importing required classes import java.io.*; import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Size of the Vector int n = 5; // Declaring the Vector with // initial size n Vector v = 新しいベクトル (n); // ベクトルの末尾に新しい要素を追加します。 for (int i = 1; i<= n; i++) v.add(i); // Printing elements System.out.println(v); // Remove element at index 3 v.remove(3); // Displaying the vector // after deletion System.out.println(v); // iterating over vector elements // using for loop for (int i = 0; i < v.size(); i++) // Printing elements one by one System.out.print(v.get(i) + ' '); } }>

出力
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

注記:

  • ベクトルの増分が指定されていない場合、その容量は増分サイクルごとに 2 倍になります。
  • ベクトルの容量はそのサイズを下回ることはできません。それと同じでも構いません。

JavaのVectorクラスに対してさまざまな操作を実行する

以下にリストされている Vector クラスのさまざまな操作について説明します。

  1. 要素の追加
  2. 要素の更新
  3. 要素の削除
  4. 要素の反復処理

操作 1: 要素の追加

要素をベクターに追加するには、 追加() 方法。このメソッドは、さまざまなパラメーターに基づいて複数の操作を実行するためにオーバーロードされます。それらは次のようにリストされています。

  • 追加(オブジェクト): このメソッドは、Vector の末尾に要素を追加するために使用されます。
  • add(int インデックス, オブジェクト): このメソッドは、ベクター内の特定のインデックスに要素を追加するために使用されます。

例:

ジャワ
// Java Program to Add Elements in Vector Class // Importing required classes import java.io.*; import java.util.*; // Main class // AddElementsToVector class GFG { // Main driver method public static void main(String[] arg) { // Case 1 // Creating a default vector Vector v1 = new Vector(); // Adding custom elements // using add() method v1.add(1); v1.add(2); v1.add('geeks'); v1.add('forGeeks'); v1.add(3); // Printing the vector elements to the console System.out.println('Vector v1 is ' + v1); // Case 2 // Creating generic vector Vector v2 = 新しいベクトル (); // add() メソッドを使用してカスタム要素を追加します。 v2.add(1); v2.add(2); v2.add(3); // ベクトル要素をコンソールに出力します。 System.out.println('Vector v2 is ' + v2); } }>>

出力:


Vector v1 is [1, 2, geeks, forGeeks, 3] Vector v2 is [1, 2, 3]>

操作 2: 要素の更新

JavaScriptのために寝る

要素を追加した後、要素を変更したい場合は、 セット() 方法。 Vector にはインデックスが付けられているため、変更したい要素は要素のインデックスによって参照されます。したがって、このメソッドはインデックスと、そのインデックスに挿入される更新された要素を受け取ります。

ジャワ
// Java code to change the // elements in vector class import java.util.*; // Driver Class public class UpdatingVector { // Main Function public static void main(String args[]) { // Creating an empty Vector Vector vec_tor = 新しいベクトル (); // add() メソッドを使用してベクトルに要素を追加します vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // ベクターを表示する System.out.println('Vector: ' + vec_tor); // set() メソッドを使用して 12 を 21 に置き換えます。 System.out.println('置き換えられるオブジェクトは: ' + vec_tor.set(0, 21)); // set() メソッドを使用して 20 を 50 に置き換えます。 System.out.println('置き換えられるオブジェクトは: ' + vec_tor.set(4, 50)); // 変更されたベクターを表示します System.out.println('新しいベクターは:' + vec_tor); } }>>

出力
Vector: [12, 23, 22, 10, 20] The Object that is replaced is: 12 The Object that is replaced is: 20 The new Vector is:[21, 23, 22, 10, 50]>

操作 3: 要素の削除

Vector から要素を削除するには、 取り除く() 方法。このメソッドは、さまざまなパラメーターに基づいて複数の操作を実行するためにオーバーロードされます。彼らです:

  • 削除(オブジェクト): このメソッドは、ベクターからオブジェクトを削除するために使用されます。このようなオブジェクトが複数ある場合は、最初に出現したオブジェクトが削除されます。
  • 削除(intインデックス): Vector にはインデックスが付けられているため、このメソッドは整数値を受け取り、Vector 内の特定のインデックスに存在する要素を単純に削除します。要素を削除した後、すべての要素が左側に移動されてスペースが埋められ、オブジェクトのインデックスが更新されます。

ジャワ
// Java code illustrating the removal // of elements from vector import java.util.*; import java.io.*; class RemovingElementsFromVector { public static void main(String[] arg) { // Create default vector of capacity 10 Vector v = new Vector(); // Add elements using add() method v.add(1); v.add(2); v.add('Geeks'); v.add('forGeeks'); v.add(4); // Removing first occurrence element at 1 v.remove(1); // Checking vector System.out.println('after removal: ' + v); } }>

出力:

after removal: [1, Geeks, forGeeks, 4]>

操作 4: ベクトルの反復

Vector を反復処理するには複数の方法があります。最も有名な方法は、基本的な for ループと 得る() 特定のインデックスにある要素を取得するメソッドと、 ループ用に高度な

ジャワ
// Java program to iterate the elements // in a Vector import java.util.*; public class IteratingVector { public static void main(String args[]) { // create an instance of vector Vectorv = 新しい Vector(); // add() メソッドを使用して要素を追加します v.add('Geeks'); v.add('オタク'); v.add(1, 'For'); // Get メソッドと // for ループを使用する for (int i = 0; i< v.size(); i++) { System.out.print(v.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : v) System.out.print(str + ' '); } }>

出力
Geeks For Geeks Geeks For Geeks>

注記: ぜひ読んでみてください Java の ArrayList と Vector クラス それをよりよく把握するために。

配列と配列リスト

Java では、Vector クラスは Java Collections Framework の一部であり、List インターフェイスの動的配列実装を提供します。これは Java のオリジナル リリース (Java 1.0) に追加され、要素の追加、挿入、削除など、ベクトルの要素を操作するためのメソッドを多数提供します。

Java で Vector を使用する方法を示す簡単な例を次に示します。

ジャワ
import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = 新しいベクトル(3, 2); // 要素をベクトルに追加します v.addElement(1); v.addElement(2); v.addElement(3); // インデックス 1 に要素を挿入します v.insertElementAt(0, 1); // インデックス 2 の要素を削除します v.removeElementAt(2); // ベクトルの要素を出力します for (int i : v) { System.out.println(i); } } }>>'  
出力 Vector クラスは同期されていることに注意してください。これは、複数のスレッドが問題を引き起こすことなく同じベクトルにアクセスできることを意味します。ただし、この同期にはパフォーマンスが犠牲になるため、複数のスレッド間でベクトルを共有する必要がない場合は、通常、同期されていない ArrayList などの代替クラスを使用することをお勧めします。

Java で Vector を使用する利点:

  1. 同期: 前述したように、Vector は同期されているため、マルチスレッド環境で安全に使用できます。
  2. 動的サイズ: 要素が追加または削除されると、ベクターのサイズは動的に拡大または縮小できるため、すべての要素を収容できる初期サイズの設定について心配する必要はありません。
  3. レガシー サポート: Vector は当初から Java の一部であり、現在もサポートされているため、Vector を使用する古い Java コードを操作する必要がある場合に適したオプションです。

Java で Vector を使用する場合の欠点:

  1. パフォーマンス: Vector での同期は、ArrayList などの他のコレクション クラスと比較してパフォーマンスが低下する可能性があります。
  2. レガシー コード: Vector は引き続きサポートされていますが、新しい Java コードは、より新しいコレクション クラスを使用して記述されることが多いため、Vector のサンプルやサポートを見つけるのが難しい場合があります。
  3. 不必要なオーバーヘッド: Vector の同期機能が必要ない場合、Vector を使用するとコードに不必要なオーバーヘッドが追加されます。

参考書

Java Collections Framework と Vector について学ぶのに適した参考書は、Naftalin と Wadler による Java Collections です。この本では、Vector を含む Java コレクション フレームワークについて包括的に説明し、これらのクラスを効果的に使用する方法を理解するのに役立つ多くの例と演習が含まれています。