Vector是一個可以放入「任意型態」的「動態陣列」,動態陣列的意思是可以依照裡面的內容物做長度的增減。
自從JDK1.2之後新的List介面出現後,Vector就加入了List介面家族,並實作新的介面方法。
Vector類別等同於ArrayList類別,那我們為什麼要學她?就用ArrayList就好啦
答案是,Vector它提供了同步化的優點(或是負擔),對多執行序是很重要的,所謂同步化的優點簡單來說就是JVM會去做同步鎖定,一次只能有一個人去做事,就不會有資源衝突,但也比較慢。
首先我們依然先從API開始,他實作了Iterable<E>, Collection<E>, List<E>三個介面
比較常用的方法有:
- public boolean add (Object o)
- public Object get (int index)
比較要注意的是如果取出資料後,如果需要資料的原始型態,要自己做資料的強制轉型
get的方法是專屬於List家族的方法,繼承AbstractList Class而來,Set家族無法使用
而add方法是從AbstractCollection 繼承給AbstractList Class再從AbstractList Class那裏繼承而來的
取值基本上都可以使用
- Iterator取值
- for迴圈加get()取值(Set家族不能用)或舊方法elementAt(i)取每一個元素
- Enumeration取值
- 用toArray轉陣列後取值
- 加強式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);
}
}
}