Java中的向量| 帶有示例的 Java 向量類

已發表: 2021-05-26

在編程中,最常用的數據結構之一是 Java 中的 Vector。 數組是可以線性存儲數據的靜態數據結構。 類似地,java中的vector也是線性存儲數據的,但它們不限於固定大小。 相反,它的大小可以根據需要增加或縮小。 父類是 AbstractList 類,在 List 接口上實現。

在開始使用向量之前,請從 java.util.package 中導入它,如下所示:

導入 java.util.Vector

目錄

聲明和評估向量的元素

下面是如何在 java 中聲明一個向量:

公共類 Vector<V> 擴展 AbstractList<V>

實現 List<V>、RandomAccess、Cloneable、Serializable

這裡,V 是元素的類型,可以是 int、string、char 等。

就像我們訪問數組中的數據成員一樣,我們也可以通過使用元素的索引在向量中做到這一點。 例如,向量 E 的第二個元素可以作為 E[2] 訪問。

在 java 中聲明向量時出現的一些常見錯誤:

  • 如果向量的初始大小為負值,則會引發 IllegalArgumentException
  • 如果指定的集合為空,則拋出 NullPointerException
  • 向量的大小小於或等於向量的容量
  • 如果未指定向量增量,則容量在每個增量週期中翻倍

構造函數

1. 向量(int initialCapacity, int Increment)

這將在 java 中創建一個具有指定初始容量的向量,並且還指定了增量。 使用增量,指定每次向上調整向量大小時分配的元素數。

語法:Vector<V> e = new Vector<V>(int initialCapacity, int Increment);

2. 向量(int initialCapacity)

它在 java 中創建一個初始容量等於指定大小的向量。

語法:Vector<V> e = new Vector<V>(int initialCapacity);

3.向量()

它在 java 中創建一個初始默認容量為 10 的向量。

語法:Vector<V> e = new Vector<V>();

4.矢量(集合c)

它在 java 中創建一個向量,其元素是集合 c 的元素。

語法:Vector<V> e = new Vector<V>(Collection c);

下面是一個例子來演示java中向量的創建和使用:

代碼

導入 java.util.*;

公共類主{

公共靜態無效主要(字符串 [] 參數)

{

// 創建默認向量

向量 a = 新向量();

// 創建一個指定大小的向量

向量 b = 新向量 (20);

// 創建一個指定大小和增量的向量

向量 c = 新向量(30,10);

b.添加(100);

b.添加(200);

b.添加(300);

// 創建具有指定集合的​​向量

向量 d = 新向量(b)

System.out.println(“容量向量a” + a.capacity());

System.out.println(“向量b的容量” + b.capacity());

System.out.println(“容量向量c” + c.capacity());

System.out.println(“容量向量d” + d.capacity());

}}

輸出

注意: .capacity() 用於返迴向量的容量。

java中的向量具有三個受保護的參數,如下所示:

1. Int elementCount() - 它告訴向量包含的元素數量

2. Int capcityIncremen()- 當向量的大小變得大於容量時,容量會自動增加。

3. Object[] elementData()- 向量的元素存儲在數組中。

方法

以下是java中一些常用的vector方法:

1.添加元素

Boolean add(Object o) - 一個元素被附加到向量的末尾

void add(int index V element)-給定的元素被添加到向量中的指定索引

在java中添加Vector元素的代碼:

導入 java.util.*;

導入java.io.*;

公共類 AddElementsToVector {

公共靜態無效主(字符串[] arg)

{

// 創建一個默認向量

向量 a = 新向量();

// 使用 add() 方法添加元素

a.添加(1);

a.添加(2);

a.add(“vect”);

a.add(“為”);

a.添加(3);

System.out.println(“向量 a 為 ” + a);

// 創建一個通用向量

向量<整數> b = 新向量<整數>();

b.添加(0);

b.添加(1);

b.添加(2);

System.out.println(“向量 b 為 ” + b);

}

}

輸出

2.刪除元素

Boolean Remove(object o) – 用於移除向量中指定索引處的元素

當元素被移除時,所有元素都向左移動以填充空格; 然後更新索引。

說明在 java 中從向量中刪除元素的代碼:

導入 java.util.*;

導入java.io.*;

公共類刪除{

公共靜態無效主(字符串[] arg)

{

// 創建一個默認向量

向量 a = 新向量();

// 使用 add() 方法添加元素

a.添加(1);

a.添加(2);

a.add(“vect”);

a.add(“為”);

a.添加(4);

// 移除元素

a.刪除(2);

// 查看

System.out.println(“刪除後:” + a);

}

}

輸出

Checkout:如何在 Java 中取得成功?

3.改變元素

set() 方法可用於在添加元素後更改元素。 元素的索引可以被引用為向量被索引。 此方法採用索引和更新的元素。

在java中更改vector中元素的代碼

導入 java.util.*;

公共類更新{

公共靜態無效主(字符串參數 [])

{

// 創建一個空向量

向量<整數> a = 新向量<整數>();

// 添加元素

a.添加(1);

a.添加(2);

a.添加(3);

a.添加(10);

a.添加(20);

// 展示

System.out.println(“向量:” + a);

// 代替

System.out.println(“替換”

+ a.set(0, 22));

System.out.println(“替換”

+ a.set(4, 50));

// 顯示修改後的向量

System.out.println(“新向量是:” + a);

}

}

輸出

4. 迭代向量

有幾種方法可以遍歷向量。 其中之一是 get() 方法。 這是一個在 java 中迭代 Vector 中元素的程序:

導入 java.util.*;

公共類迭代{

公共靜態無效主(字符串參數 [])

{

// 創建一個向量實例

向量<String> a = 新向量<>();

// 使用 add() 方法添加元素

a.add(“向量”);

a.add(“在”);

a.add(1, “java”);

// 使用 Get 方法和 for 循環

for (int i = 0; i < a.size(); i++) {

System.out.print(a.get(i) + ” “);

}

System.out.println();

// 用於每個循環

對於(字符串str:a)

System.out.print(str + ” “);

}

}

輸出

閱讀: Java 架構和組件

其他重要方法

  • Int size() – 用於返迴向量的大小
  • Object get(int index) – 用於返迴向量中指定位置的元素
  • Object firstElement() – 用於返回java中vector的第一個元素
  • Object lastElement() - 用於返回java中vector的最後一個元素
  • Boolean equals(Object o) -用於比較向量與給定對像是否相等。 如果所有元素在它們各自的索引處都為真,則返回真
  • void trimtosize() - 用於移除額外容量並保持容量等於大小

更多關於向量

  • Java中的向量是一種動態數據結構,可以使用整數索引進行訪問。
  • 雖然類似於 ArrayList,但它是同步的,包含一些在集合框架中不可用的遺留方法。
  • 廣告訂單保持不變。
  • 它很少在非線程環境中使用。
  • 由於同步,向量在搜索、添加、更新和刪除元素時性能較差。
  • 矢量類的迭代器快速失敗並在並發修改的情況下拋出 ConcurrentModificationException。
  • 堆棧是其直接已知的子類。

向量中的內存分配

如上所示,向量沒有定義的大小。 相反,java 中的向量可以動態改變其大小。 假設向量分配無限空間來存儲元素。 然而,事實並非如此。 向量的大小根據兩個字段“容量增量”和“容量”進行更改。

聲明向量時,會分配一個等於大小的“容量”字段,並且可以添加等於容量的元素。 一旦插入下一個元素,數組的大小就會增加“容量增量”大小。 這使向量能夠改變其大小——當插入新元素時,默認構造函數的容量加倍。

從世界頂級大學在線學習軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

Java中Vector的優點

向量的動態大小避免了內存浪費,並且我們的數據結構的大小可以在程序中間隨時更改。

向量和 ArrayList 都是動態的。 但是,向量更有利,因為:

  • 向量是同步的。
  • 它有一些不能在 ArrayLists 上實現的遺留功能。

結論

Java 中的向量是一個沒有大小限制的動態數組,它是自 Java 1.2 以來 Java 集合框架的一部分。 我們在這篇博客中看到了各種構造函數和常用的向量方法。 值得注意的是,Vector 類只能在線程安全的環境中使用。

如果您有興趣了解有關 Java、OOP 和全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的軟件開發執行 PG 計劃 – 全棧開發專業化,專為工作專業人士設計,提供 500 多個小時嚴格的培訓、9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

Java中的向量是什麼?

向量是 Java 中的一種數據結構。 顧名思義,向量是一種元素序列。 它使用一個動態數組,該數組在訪問時會增長和縮小。 它有一個 size() 方法來獲取向量的當前大小和一個 capacity() 方法來獲取向量的容量。 這兩種方法返回大於零的值。 向量的容量是可以存儲在向量內而無需分配新數組的元素的數量。 向量的大小是當前存儲在向量內的元素的數量。

向量相對於數組有什麼優勢?

數組的大小是固定的,這意味著它們不能根據需要增長或縮小。 向量被實現為可動態調整大小的數組,允許它們根據需要增長和縮小。 這對於數據的持續增長很有用; 例如,逐行讀取文本文件的程序將能夠隨著文件的大小而增長。 向量通常比數組更有效。 這是因為向量被實現為引用數組(java.lang.Objects),而數組被實現為對像數組。

Java 中的 ArrayList 是什麼?

ArrayList 類表示一個動態數組。 它可以根據需要增長以適應新元素。 該數組實際上是作為對象引用的列表來實現的。 每當需要創建元素時,都會提供對新對象的引用。 這是可能的,因為 ArrayList 是作為可動態調整大小的列表實現的。 ArrayList 從 AbstractList 繼承了它的大部分方法和字段。 ArrayList 比數組快,因為它不必創建新對象。 改變數組大小的變異方法(例如添加、設置和刪除)被稱為破壞性方法,因為它們會永久改變數組的大小。