首頁 >Java >java教程 >Java程式設計中的vector類別用法學習筆記

Java程式設計中的vector類別用法學習筆記

黄舟
黄舟原創
2017-01-20 11:05:191678瀏覽

Vector通常被用來實現動態數組,即可實現自動增長的對象數組,和C++一樣vector類同樣被Java內置,下面就來看一下vector類的基本用法.

 

 

util.vector提供了向量類別(vector)以實現類似動態陣列的功能。在Java語言中沒有指標的概念,但如果正確且靈活地使用指標確實可以大幅提升程式的品質。例如在c,c++中所謂的「動態數組」一般都由指標來實現。為了彌補這個缺點,Java提供了豐富的類別函式庫來方便程式設計者使用,vector類別就是其中之一。事實上,靈活使用陣列也可以完成向量類別的功能,但向量類別中提供大量的方法大大方便了使用者的使用。 

創建了一個向量類別的物件後,可以往其中隨意插入不同類別的對象,即不需顧及類型也不需預先選定向量的容量,並且可以方便地進行查找。對於預先不知或不願預先定義數組大小,並且需要頻繁地進行查找,插入,刪除工作的情況。可以考慮使用向量類別。 

Vector類別實作了一個動態陣列。和ArrayList和相似,但是兩者是不同的:

Vector是同步存取的。

Vector包含了許多傳統的方法,這些方法不屬於集合框架。

Vector主要用在事先不知道陣列的大小,或只是需要一個可以改變大小的陣列的情況。

Vector類別支援4種建構方法。

1.第一種建構方法建立一個預設的向量,預設大小為10:

Vector()

2.第二種建構方法建立指定大小的向量。


Vector(int size)

3.第三種構造方法建立指定大小的向量,並且增量用incr指定. 增量表示向量每次增加的元素數目。


Vector(int size,int incr)

4.第四中建構方法建立一個包含集合c元素的向量:


Vector(Collection c)

使用第一種方法系統會自動對向量進行管理,若使用後兩種方法。則係統將根據參數,initialcapacity設定向量物件的容量(即向量物件可儲存資料的大小),當真正存放的資料數量超過容量時。系統會擴充向量物件儲存容量。

參數capacityincrement給定了每次擴充的擴充值。當capacityincrement為0的時候,則沒次擴充一倍,利用這個功能可以優化儲存。在Vector類別中提供了各種方法方便使用者的使用:

插入功能: 

(1)public final synchronized void adddElement(Object obj) 

將obj插入向量的尾部。 obj可以是任何類型的物件。對同一個向量對象,亦可在其中插入不同類別的對象。但插入的應是物件而不是數值,所以插入數值時要注意將陣列轉換成對應的物件。
例如:要插入整數1時,不要直接呼叫v1.addElement(1),正確的方法為: 

Vector v1 = new Vector(); 
Integer integer1 = new Integer(1); 
v1.addElement(integer1);

(2)public final synchronized void setElementAt(Object obj,int index) 

將index處的物件設為obj,原來的物件將被覆蓋。 

(3)public final synchronized void insertElement(Object obj,int index) 
在index指定的位置插入obj,原來物件以及此後的物件依次往後順延。

刪除功能: 

(1)public final synchronized void removeElement(Object obj) 

從向量中刪除obj,若有多個存在,則從向量頭開始試,刪除找到的第一個與obj相同的向量成員。
(2)public final synchronized void removeAllElement(); 
刪除向量所有的物件 
(3)public fianl synchronized void removeElementAt(int index) 
刪除研究public final int indexOf(Object obj) 
從向量頭開始搜尋obj,傳回所遇到的第一個obj對應的下標,若不存在此obj,回傳-1. 
(2)public final synchronized int indexOf( Object obj,int index) 

從index所表示的下標處開始搜尋obj. 

(3)public final int lastindexOf(Object obj) 
從向量尾部開始逆向搜尋obj. 
(4)public final synchornized int Object obj,int index) 
從index所表示的下標處由尾至頭逆向搜尋obj. 
(5)public final synchornized firstElement() 
取得向量物件中的首個obj 
(6)public final final final final final final) lastElement() 
取得向量物件的最後一個obj

實例
下面的程式說明這個集合所支援的幾個方法:

import java.util.*;
 
public class VectorDemo {
 
  public static void main(String args[]) {
   // initial size is 3, increment is 2
   Vector v = new Vector(3, 2);
   System.out.println("Initial size: " + v.size());
   System.out.println("Initial capacity: " +
   v.capacity());
   v.addElement(new Integer(1));
   v.addElement(new Integer(2));
   v.addElement(new Integer(3));
   v.addElement(new Integer(4));
   System.out.println("Capacity after four additions: " +
     v.capacity());
 
   v.addElement(new Double(5.45));
   System.out.println("Current capacity: " +
   v.capacity());
   v.addElement(new Double(6.08));
   v.addElement(new Integer(7));
   System.out.println("Current capacity: " +
   v.capacity());
   v.addElement(new Float(9.4));
   v.addElement(new Integer(10));
   System.out.println("Current capacity: " +
   v.capacity());
   v.addElement(new Integer(11));
   v.addElement(new Integer(12));
   System.out.println("First element: " +
     (Integer)v.firstElement());
   System.out.println("Last element: " +
     (Integer)v.lastElement());
   if(v.contains(new Integer(3)))
     System.out.println("Vector contains 3.");
   // enumerate the elements in the vector.
   Enumeration vEnum = v.elements();
   System.out.println("\nElements in vector:");
   while(vEnum.hasMoreElements())
     System.out.print(vEnum.nextElement() + " ");
   System.out.println();
  }
}

以上實例編譯運算運算學習筆記的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn