Java編程中的vector類用法學習筆記_java

來源:互聯網
上載者:User

java.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設定向量對象的容量(即向量對象可儲存資料的大小),當真正存放的資料個數超過容量時。系統會擴充向量Object Storage Service容量。

參數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)
刪除index所指的地方的對象

查詢搜尋功能:
(1)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 lastIndex(Object obj,int index)
從index所表示的下標處由尾至頭逆向搜尋obj.
(5)public final synchornized firstElement()
擷取向量對象中的首個obj
(6)public final synchornized Object 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();  }}

以上執行個體編譯運行結果如下:

Initial size: 0Initial capacity: 3Capacity after four additions: 5Current capacity: 5Current capacity: 7Current capacity: 9First element: 1Last element: 12Vector contains 3.Elements in vector:1 2 3 4 5.45 6.08 7 9.4 10 11 12

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.