歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java中的向量(Vector)用法

Java中的向量(Vector)用法

日期:2017/3/1 10:07:34   编辑:Linux編程

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

  相對於ArrayList來說,Vector線程是安全的,也就是說是同步的
  創建了一個向量類的對象後,可以往其中隨意地插入不同的類的對象,既不需顧及類型也不需預先選定向量的容量,並可方便地進行查找。對於預先不知或不願預先定義數組大小,並需頻繁進行查找、插入和刪除工作的情況,可以考慮使用向量類。向量類提供了三種構造方法:
  public vector()
  public vector(int initialcapacity,int capacityIncrement)
  public vector(int initialcapacity)
  使用第一種方法,系統會自動對向量對象進行管理。若使用後兩種方法,則系統將根據參數initialcapacity設定向量對象的容量(即向量對象可存儲數據的大小),當真正存放的數據個數超過容量時,系統會擴充向量對象的存儲容量。
  參數capacityIncrement給定了每次擴充的擴充值。當capacityIncrement為0時,則每次擴充一倍。利用這個功能可以優化存儲。在Vector類中提供了各種方法方便用戶使用:
插入功能
  (1)public final synchronized void addElement(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 insertElementAt(Object obj,int index)
  在index指定的位置插入obj,原來對象以及此後的對象依次往後順延。
刪除功能
  (1)public final synchronized void removeElement(Object obj)
  從向量中刪除obj。若有多個存在,則從向量頭開始試,刪除找到的第一個與obj相同的向量成員。
  (2)public final synchronized void removeAllElement()
  刪除向量中所有的對象。
  (3)public final synchronized void removeElementlAt(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 synchronized int lastIndexOf(Object obj,int index)
  從index所表示的下標處由尾至頭逆向搜索obj。
  (5)public final synchronized Object firstElement()
  獲取向量對象中的首個obj。
  (6)public final synchronized Object lastelement()
  獲取向量對象中的最後一個obj。
實例
  了解了向量的最基本的方法後,我們來看一下例子VectorApp.java。
  例 VectorApp.java
  import java.util.Vector;
  import java.lang.*;
  //這一句不應該要,但原文如此
  import java.util.Enumeration;
  public class VectorApp
  {
  public static void main(String[] args)
  {
  Vector<Integer> v1=new Vector<Integer>(); //jdk1.5以後增加了對[1]的支持!
  Integer integer1=new Integer(1);
  v1.addElement("one");
  //加入的為字符串對象  
 v1.addElement(integer1);
  v1.addElement(integer1);
  //加入的為Integer的對象  
 v1.addElement("two");
  v1.addElement(new Integer(2));
  v1.addElement(integer1);
  v1.addElement(integer1);
  System.out.println("The vector v1 is:\n\t"+v1);
  //將v1轉換成字符串並打印  
 v1.insertElementAt("three",2);
  v1.insertElementAt(new Float(3.9),3);
  System.out.println("The vector v1(used method insertElementAt())is:\n\t "+v1);
  //往指定位置插入新的對象,  指定位置後的對象依次往後順延  
 v1.setElementAt("four",2);
  System.out.println("The vector v1(used method setElementAt())is:\n\t "+v1);
  //將指定位置的對象設置為新的對象  
 v1.removeElement(integer1);
  //從向量對象v1中刪除對象integer1由於
  存在多個integer1所以從頭開始
  找,刪除找到的第一個integer1
  Enumeration enum=v1.elements();
  System.out.print("The vector v1(used method removeElement())is:");
  while(enum.hasMoreElements())
  System.out.print(enum.nextElement()+" ");
  System.out.println();
  //使用枚舉類(Enumeration)  的方法來獲取向量對象的每個元素  
 System.out.println("The position of object 1(top-to-bottom):"
  + v1.indexOf(integer1));
  System.out.println("The position of object 1(tottom-to-top):"
  +v1.lastIndexOf(integer1));
  //按不同的方向查找對象integer1所處的位置  
 v1.setSize(4);
  System.out.println("The new vector(resized the vector)is:"+v1);
  //重新設置v1的大小,多余的元素被行棄  
 }
  }
  運行結果:
  E:\java01>java VectorApp
  The vector v1 is:
  [one,1,1,two,2,1,1]
  The vector v1(used method insertElementAt())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(used method removeElement())is:
  one four 3.9 1 two 2 1 1
  The position of object 1(top-to-bottom):3
  The position of object 1(tottom-to-top):7
  The new vector(resized the vector)is:
  [one,four,3.9,1]
  E:\java01>
  從例1中運行的結果中可以清楚地了解上面各種方法的作用,另外還有幾點需解釋。
  (1)類Vector定義了方法
  public final int size()
  此方法用於獲取向量元素的個數。它的返回值是向是中實際存在的元素個數,而非向量容量。可以調用方法capactly()來獲取容量值。
  方法:
  public final synchronized void setsize(int newsize)
  此方法用來定義向量大小。若向量對象現有成員個數已超過了newsize的值,則超過部分的多余元素會丟失。
  (2)程序中定義了Enumeration類的一個對象
  Enumeration是java.util中的一個接口類,在Enumeration中封裝了有關枚舉數據集合的方法。
  在Enumeration中提供了方法hawMoreElement()來判斷集合中是否還有其它元素和方法nextElement()來獲取下一個元素。利用這兩個方法可以依次獲得集合中元素。
  Vector中提供方法:
  public final synchronized Enumeration elements()
  此方法將向量對象對應到一個枚舉類型。java.util包中的其它類中也大都有這類方法,以便於用戶獲取對應的枚舉類型。

Copyright © Linux教程網 All Rights Reserved