編程學習筆記之Java相關vector向量的介紹

在Java中,有一個包叫java.util,它是一個保存着各種常用工具類的類庫,其中就包括向量(vector)。向量是一種類似數組的順序存儲的數據結構,但是它的功能比數組強大的多。比如,Vector類的對象是允許不同類型大小的元素共存的變長數組,Vector類的對象不但可以保存數據,而且還封裝了很多方法來操作這些數據;再比如,創建數組時需要事先聲明大小,但Vector不需要,因爲它是可以在運行時動態增長或縮小的,總的來說,相比數組,如下情況更適合使用Vector:

1):需要處理的對象數目不定,序列中的元素都是對象或可以表示爲對象。

2):需要將不同類型的對象組合成一個序列。

3):需要對對象中的元素做頻繁的插入和刪除。

4):經常需要定位序列中的對象或其它查找操作。

5):在不同類之間傳遞大量的數據。

如果上面的不好記,那麼只需這樣想就可以了:當我們的序列內的元素是簡單的內建類型,如int、double等時,那麼我們就使用數組,否則使用Vector。


1、Vector向量類對象的創建

首先介紹Vector向量類常用的構造函數:

第一種

public Vector(); //創建一個響亮對象,默認容量是10個元素。

第二種
public Vector(int initCapacity, int capacityIncrement);
/*這個構造函數的第一個參數initCapacity,表示創建的Vector對象的初始容量【元素數目】;而第二個參數capacityIncrement,表示如果我們創建的這個vector容量不夠了,那麼擴充時應該一次填充多少個多少個元素*/

//比如我們看下面的例子
Vector MyVector = new Vector(100,50);
//上面的代碼意思是,創建一個MyVector向量容器,初始容量爲100個元素,如果在以後的運行中該容器使用完,那麼就以50個元素大小來遞增擴充,比如變成150、200、250等


2、如何對向量容器添加元素

Vector類有兩個方法對向量序列添加元素:

1):

addElement( Object obj ); // 在向量序列的尾部添加新元素。
2):
insertElement( Object obj, int index ); // 在向量序列中的指定位置index處插入新元素obj


下面這個就是使用上述兩種方法的例子代碼:

Vector MyVector = new Vector(); //創建了一個10個元素大小的Vector向量容器

for( int i=0; i<100; i++ ){
  MyVector.addElement( new MyComplex(0.0, 0.0) ); //其中的MyComplex是我們隨便做的一個複數類
}

MyVector.insertElement( new MyComplex(1.0, 2.0), 50 ); //在這裏我們向第50個位置插入一個新的MyComplex元素
在上面的程序中,我們首先創建一個Vector,裏面啥都沒有,然後在循環體中,我們增加了一百個MyComplex類元素,最後我們又在中間插入一個新元素,所以最後MyVector的大小是101個元素!


3,、修改或刪除向量序列中的元素

如果我們要修改(覆蓋)容器序列中的某個元素,可以參考如下方法:

void setElementAt( Object obj, int index ); //將向量序列中index出的元素改換成obj

如果我們要刪除序列中的某個元素,可以參考這個方法:

void removeElementAt(int index); //產出容器序列中第index出的元素,然後把它後面所有的元素往前挪一個,以便補齊

如果我們要刪除序列容器中和obj相同的元素,可以參考這個方法:

boolean removeElement( Object obj ); //刪除容器序列中第一個與obj相同的元素,然後將後面所有的元素前移,如果沒找到與obj相同的元素,即沒有刪除任何東西,那麼該方法返回FALSE,否則返回TRUE。

如果我們要刪除容器中所有的元素,可以參考如下方法:

void removeAllElement();


比如下面的程序代碼,首先創建一個Vector,然後刪除所有的字符串“to”:

Vector MyVector = new Vector(); //創建一個由10個元素大小的空Vector

for( int i=0; i<10; i++ ){
  MyVector.addElement("Welcome");
  MyVector.addElement("to");
  MyVector.addElement("Java");
}

while( MyVector.removeElement("to") );



4、查找向量序列中的元素

常用於查找序列中元素的方法如下:

Object elementAt( int index );
該方法返回指定位置index處的元素,需要注意的是,由於返回的是所有類的父類Object,所以在使用之前通常要進行強制類型轉換,以便將返回的對象引用轉換成我們需要的類型,例如下面的使用例子:

String str = (String)MyVector.elementAt(5); //將第5個元素返回,然後轉換成String賦值給我們的str


如果要檢查容器序列中是否包含我們指定的元素obj,可以參考如下方法:

boolean contains(Object obj); //看看是否有obj,如果有,返回TRUE,否則返回FALSE


如果我們要從一個指定位置處向後搜索,然後返回找到的第一個obj元素,那麼可以參考如下方法:

int indexOf( Object obj, int start_index ); //其中的start_index,就是我們要開始尋找的位置,如果沒有找到對象obj,那麼該方法返回-1

如果我們要從一個指定位置處向前搜索,然後返回第一個obj元素【即到達指定位置前最後的那個obj元素】位置,那麼可以參考如下方法:

int lastIndexOf( Object obj, int start_index ); //如果沒有找到對象obj,那麼該方法返回-1



讓我們接上一段示例代碼,寫下下面的代碼,該程序將尋找序列容器中所有未“Welcome”的元素並將它們的位置輸出:

...

int i=0;
while( (i = MyVector.indexOf( "Welcome", i)) != -1 )
  System.out.println( i );




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章