J2ME數(shù)據(jù)結(jié)構(gòu)中Hashtable和Vector的使用
J2ME中的數(shù)據(jù)結(jié)構(gòu)大多都用輕量級的Hashtable和Vector,這里和大家分享一下它們的具體用法,當(dāng)需要往Hashtable中裝入很多實體時,創(chuàng)建一個合適大容量的Hashtable實例比讓實例去自動增加來容量來適應(yīng)要在性能上高的多。
J2ME中的Hashtable和Vector
J2ME中的數(shù)據(jù)結(jié)構(gòu)大多都用輕量級的Hashtable和Vector.
1.Hashtable
ME版本的Hashtable和SE版本的***的區(qū)別是泛型的支持,前者本身不支持泛型。但是也有些細微的差別。
Hashtable(以下都是指ME版本的Hashtable)將鍵(key)映射到值(value)上。任何非空(non-null)的對象都可以被用作一個key或者作為一個值。
Hashtable實例有兩個參數(shù)影響其效率:容量和裝載因子。裝載因子在CLDC實現(xiàn)中始終是75%(而在其它版本中這個值是可以指定的)。當(dāng)Hashtable中包含的實體數(shù)超過裝載因子和當(dāng)前容量的一個結(jié)合值(這可能通過相應(yīng)的算法得出)時,就通過調(diào)用rehash方法來增加容量。
當(dāng)需要往Hashtable中裝入很多實體時,創(chuàng)建一個合適大容量的Hashtable實例比讓實例去自動增加來容量來適應(yīng)要在性能上高的多。
2.Vector
Vector類實現(xiàn)了一個可增的對象數(shù)組。像數(shù)組一樣,它包含的組件可以用整數(shù)索引(下表)來訪問。因此,當(dāng)Vector創(chuàng)建之后,一個Vector的大小可以隨著增加或者移除元素操作而增大或者減小。
每個Vector試著通過維持一個容量(capacity)和一個容量增量(capacityIncrement)來優(yōu)化存儲管理。容量總是至少跟Vector的大?。╯ize)一樣大;它通常都會大一些,因為組件會被加進到Vector中,Vector的存儲大小會以capacityIncrement塊大小來增加。應(yīng)用程序可以在插入大量組件之前對Vector容量進行增加;這樣做可以降低增加性重新分配的數(shù)量。
數(shù)據(jù)結(jié)構(gòu)中我們學(xué)習(xí)過鏈表、數(shù)組、樹等諸多數(shù)據(jù)結(jié)構(gòu)。Hashtable就是一種底層由鏈表實現(xiàn)的數(shù)據(jù)結(jié)構(gòu),所以它擁有鏈表數(shù)據(jù)結(jié)構(gòu)的優(yōu)缺點。而Vector由數(shù)據(jù)結(jié)構(gòu)比較特殊的數(shù)組來實現(xiàn),同樣擁有了數(shù)組的優(yōu)缺點,不同的時,由于在數(shù)組基礎(chǔ)之上增加的可變的操作,這樣一定程度上降低了它的效率。不過Vector的效率據(jù)說還是相當(dāng)高的。
【編輯推薦】