Java中 Vector的使用詳解

Vector 可實現自動增加的對象數組。 
java.util.vector提供了向量類(Vector)以實現相似動態數組的功能。 
建立了一個向量類的對象後,能夠往其中隨意插入不一樣類的對象,即不需顧及類型也不需預先選定向量的容量,並能夠方便地進行查找。java

對於預先不知或者不肯預先定義數組大小,而且須要頻繁地進行查找,插入,刪除工做的狀況,能夠考慮使用向量類。數組

向量類提供了三種構造方法: 優化

public vector() 
public vector(int initialcapacity,int capacityIncrement) 
public vector(int initialcapacity)

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

參數capacityincrement給定了每次擴充的擴充值。當capacityincrement爲0的時候,則每次擴充一倍,利用這個功能能夠優化存儲。code

在Vector類中提供了各類方法方便用戶的使用:對象

插入功能: 
(1)public final synchronized void adddElement(Object obj) 
         將obj插入向量的尾部。obj能夠是任何類型的對象。對同一個向量對象,亦能夠在其中插入不一樣類的對象。但插入的應是對象而不是數值,因此插入數值時要注意將數組轉換成相應的對象。 
          例如:要插入整數1時,不要直接調用v1.addElement(1),正確的方法爲: blog

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 insertElementAt(Object obj,int index) 
    在index指定的位置插入obj,原來對象以及此後的對象依次日後順延。ci

刪除功能: 
(1) public final synchronized void removeElement(Object obj) 
    從向量中刪除obj,如有多個存在,則從向量頭開始試,刪除找到的第一個與obj相同的向量成員。 element

(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

其餘功能:
(1) public final int size(); 
   此方法用於獲取向量元素的個數。它們返回值是向量中實際存在的元素個數,而非向量容量。能夠調用方法capacity()來獲取容量值。

(2)  public final synchronized void setSize(int newsize); 
   此方法用來定義向量的大小,若向量對象現有成員個數已經超過了newsize的值,則超過部分的多餘元素會丟失。 

程序中定義Enumeration類的一個對象Enumeration是java.util中的一個接口類, 

(3) public final synchronized Enumeration elements(); 
   此方法將向量對象對應到一個枚舉類型。java.util包中的其餘類中也都有這類方法,以便於用戶獲取對應的枚舉類型。

   在Enumeration中封裝了有關枚舉數據集合的方法。 
    方法 hasMoreElement() 來判斷集合中是否還有其餘元素。

        方法 nextElement() 來獲取下一個元素

如下代碼就是用hasMoreElement()和 nextElement()遍歷Vector

import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

public class TestVector {
    public void test01() {
        Vector<String> hs = new Vector<String>();
        hs.add("aa");
        hs.add("bb");
        hs.add("aa");
        hs.add("cc");
        hs.add("aa");
        hs.add("dd");
        printSet2(hs);
    }

    public void printSet(List hs) {
        Iterator iterator = hs.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

    public void printSet2(Vector<String> hs) { Enumeration<String> elements = hs.elements(); while (elements.hasMoreElements()) { System.out.println(elements.nextElement()); } } public static void main(String[] args) {
        new TestVector().test01();
    }
}

運行結果:

PS:同時也有一個結論 Vector是有序的,能夠重複的。

相關文章
相關標籤/搜索