「Java」「轉貼」java.util.Hashtable 和 java.util.Vector

以下來源,來自於:
因特內軟體-技術專欄
http://www.interinfo.com.tw/edoc/ch20/frontline.htm

在JDK 內建的API 中,java.util.Hashtable 和 java.util.Vector 算是兩個非常相似,卻又用法迴異的物件。兩者相似的地方是,都可以動態的將一些物件放進去,相異的地方則是使用的方法與效率的差別。
Java.util.Vector 是一種JDK 內建的 API,它的定義就是一種能夠自動長大或縮小的陣列形態,其最大的用途就是彌補Array 的彈性不足,在宣告的時後,可以不必宣告其大小,等到物件一個個的加入時,容量不足時就會自動加大容量。使用的方式如下

Vector v=new Vector();
v.addElement("line 1");
v.addElement("line 2");
v.addElement("line 3");
v.addElement("line 4");

由於Vector 是一種物件,因此操作的方式必需透過 method 來運作,如

新增一個物件 addElement(Object obj);
移除一個物件 removeElement(int Index);
清除所有的物件 removeAllElement();

在Vector 中的元素是按照你加入的順序一個個排好的,所以如果你要讀取第 n 個元素就非常的方便而快速。但如果你要搜尋 "line 3" 這個元素就比較慢了。
Java.util.Hashtable 顧名思義來說,就是資料結構中,搜尋這個章節所提到的雜湊表。其使用的方式如下

Hashtable h=new Hashtable();
h.put("a","line 1");
h.put("b","line 2");
h.put("c","line 3");
h.put("d","line 4");

相較於Vector 之下,Hashtable 一次傳入兩個參數,第一個參數是Hash 的 Key,第二個才是存放的 Value。照上例中h應該有4筆資料了,如果再

h.put("c","line 5");

由於key 值重複,因此不會新增一個空位放置 "line 5",而是將原來 "line 3"的位置覆蓋掉,而搜尋的方是是使用

Object obj=h.get("c"); // 此時取出的資料是 "line 5"
就可以快速取出資料了。

這兩種資料結構都可以存放大量的物件在記憶體中,效率看來是新增元素時,Vector 較Hashtable 快。然而在搜尋時,Hashtable 就比Vector 快多了。

留言

這個網誌中的熱門文章

[Excel]國曆轉農曆VBA

「CSS」「div區塊介紹」 三欄式網頁排版設計

「Java」「For迴圈」 三角形