[Java][概念][集合]集合概念-Vector

Vector是一個可以放入「任意型態」的「動態陣列」,動態陣列的意思是可以依照裡面的內容物做長度的增減。

自從JDK1.2之後新的List介面出現後,Vector就加入了List介面家族,並實作新的介面方法。

Vector類別等同於ArrayList類別,那我們為什麼要學她?就用ArrayList就好啦

答案是,Vector它提供了同步化的優點(或是負擔),對多執行序是很重要的,所謂同步化的優點簡單來說就是JVM會去做同步鎖定,一次只能有一個人去做事,就不會有資源衝突,但也比較慢。

首先我們依然先從API開始,他實作了Iterable<E>, Collection<E>, List<E>三個介面

比較常用的方法有:

  1. public boolean add (Object o)
  2. public Object get (int index)

比較要注意的是如果取出資料後,如果需要資料的原始型態,要自己做資料的強制轉型

get的方法是專屬於List家族的方法,繼承AbstractList Class而來,Set家族無法使用

而add方法是從AbstractCollection 繼承給AbstractList Class再從AbstractList Class那裏繼承而來的

取值基本上都可以使用

  1. Iterator取值
  2. for迴圈加get()取值(Set家族不能用)或舊方法elementAt(i)取每一個元素
  3. Enumeration取值
  4. 用toArray轉陣列後取值
  5. 加強式for迴圈取值

TestVector_1(測試)elementAt(i)取值

/**
 *  Vector 為一可置入"任意物件"的"動態陣列"(可隨內含物多寡增減其長度)
 */
import java.util.*;
public class TestVector_1 {
       public static void main(String args[]) {
            Vector v = new Vector();
            v.addElement(new Integer(12));
            v.addElement(new Long(34L));
            v.addElement(new Float(5.6f));
            v.addElement(new Double(7.8));
            v.addElement(new String("Hello"));
            
            for (int i = 0 ; i < v.size() ; i++){
                 Object obj = v.elementAt(i);
                 System.out.println(obj);
            }
      }
}

TestVector_(測試)get(i)取值

/**
 *  Vector 為一可置入"任意物件"的"動態陣列"(可隨內含物多寡增減其長度)
 */
import java.util.*;
public class TestVector_2 {
       public static void main(String args[]) {
            Vector v = new Vector();
            v.add(new Integer(12));
            v.add(new Long(34L));
            v.add(new Float(5.6f));
            v.add(new Double(7.8));
            v.add(new String("Hello"));
            
            for (int i = 0 ; i < v.size() ; i++){
                 Object obj = v.get(i);
                 System.out.println(obj);
            }
      }
}