溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java vector的詳解及實例

發(fā)布時間:2020-09-10 01:18:49 來源:腳本之家 閱讀:112 作者:lqh 欄目:編程語言

Vector 可實現(xiàn)自動增長的對象數(shù)組。

java.util.vector提供了向量類(vector)以實現(xiàn)類似動態(tài)數(shù)組的功能。在Java語言中沒有指針的概念,但如果正確靈活地使用指針又確實可以大大提高程序的質(zhì)量。比如在c,c++中所謂的“動態(tài)數(shù)組”一般都由指針來實現(xiàn)。為了彌補這個缺點,Java提供了豐富的類庫來方便編程者使用,vector類便是其中之一。事實上,靈活使用數(shù)組也可以完成向量類的功能,但向量類中提供大量的方法大大方便了用戶的使用。 

    創(chuàng)建了一個向量類的對象后,可以往其中隨意插入不同類的對象,即不需顧及類型也不需預先選定向量的容量,并可以方便地進行查找。對于預先不知或者不愿預先定義數(shù)組大小,并且需要頻繁地進行查找,插入,刪除工作的情況??梢钥紤]使用向量類。

向量類提供了三種構(gòu)造方法:

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

使用第一種方法系統(tǒng)會自動對向量進行管理,若使用后兩種方法。則系統(tǒng)將根據(jù)參數(shù),initialcapacity設(shè)定向量對象的容量(即向量對象可存儲數(shù)據(jù)的大?。斦嬲娣诺臄?shù)據(jù)個數(shù)超過容量時。系統(tǒng)會擴充向量對象存儲容量。

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

插入功能:

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

將obj插入向量的尾部。obj可以是任何類型的對象。對同一個向量對象,亦可以在其中插入不同類的對象。但插入的應是對象而不是數(shù)值,所以插入數(shù)值時要注意將數(shù)組轉(zhuǎn)換成相應的對象。

例如:要插入整數(shù)1時,不要直接調(diào)用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處的對象設(shè)置成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

例子:VectorApp.Java

import java.util.Vector;  
import java.lang.*;  
import java.util.Enumeration;  
public class VectorApp  
{  
   public static void main(String args[])  
   {  
     Vector v1 = new Vector();  
     Integer integer1= new Integer(1);  
     //加入為字符串對象  
     v1.addElement("one");  
     //加入的為integer的對象  
     v1.addElement(integer1);  
     v1.addElement(integer1);  
     v1.addElement("two");  
     v1.addElement(new Integer(2));  
     v1.addElement(integer1);  
     v1.addElement(integer1);  
     //轉(zhuǎn)為字符串并打印  
      System.out.println("The Vector v1 is:\n\t"+v1);  
     //向指定位置插入新對象  
     v1.insertElement("three",2);  
     v1.insertElement(new Float(3.9),3);  
     System.out.println("The Vector v1(used method  
     insertElementAt()is:\n\t)"+v1);  
     //將指定位置的對象設(shè)置為新的對象  
      //指定位置后的對象依次往后順延  
      v1.setElementAt("four",2);  
      System.out.println("The vector v1 cused method setElmentAt()is:\n\t"+v1);  
      v1.removeElement(integer1);  
      //從向量對象v1中刪除對象integer1  
      //由于存在多個integer1,所以從頭開始。  
       //找刪除找到的第一個integer1.  
      Enumeration enum = v1.elements();  
      System.out.println("The vector v1 (used method removeElememt()is");  
      while(enum.hasMoreElements())  
      System.out.println(enum.nextElement()+"");  
      System.out.println();  
      //使用枚舉類(Enumeration)的方法取得向量對象的每個元素。  
       System.out.println("The position of Object1(top-to-botton):"+v1.indexOf(integer1));  
      System.out.println("The position of Object1(tottom-to-top):"+v1.lastIndexOf(integer1));  
      //按不同的方向查找對象integer1所處的位置  
       v1.setSize(4);  
      System.out.println("The new Vector(resized the vector)is:"+v1);  
      //重新設(shè)置v1的大小,多余的元素被拋棄   
   }  
}  

運行結(jié)果:

E:\java01>java VectorApp 
The vector v1 is:[one,1,1,two,2,1,1] 
The vector v1(used method insetElementAt()) is: 
[one,1,three,3.9,1,two,2,1,1] 
The vector v1(used method setElementAt()) is: 
[one,1,four,3.9,1,two,2,1,1] 
The vector v1(useed method removeElement()) is: 
one four 3.9 1 two 2 1 1 
The position of object1(top-to-botton):3 
The position of object1(botton-to-top):7 
The new Vector(resized the vector) is: 
[one,four,3.9,1] 

(1)類vector定義了方法

public final int size(); 

此方法用于獲取向量元素的個數(shù)。它們返回值是向量中實際存在的元素個數(shù),而非向量容量??梢哉{(diào)用方法capacity()來獲取容量值。

方法:

public final synchronized void setsize(int newsize); 

此方法用來定義向量的大小,若向量對象現(xiàn)有成員個數(shù)已經(jīng)超過了newsize的值,則超過部分的多余元素會丟失。

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

在Enumeration中封裝了有關(guān)枚舉數(shù)據(jù)集合的方法。

在Enumeration提供了方法hasMoreElement()來判斷集合中是否還有其他元素和方法nextElement()來判斷集合中是否還有其他

元素和方法nextElement()來獲取下一個元素。利用這兩個方法,可以依次獲得集合中的元素。

Vector中提供方法:

public final synchronized Enumeration elements(); 


此方法將向量對象對應到一個枚舉類型。java.util包中的其他類中也都有這類方法,以便于用戶獲取對應的枚舉類型。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI