當前位置:編程學習大全網 - 編程語言 - Java中集合類的區別,請高手詳解

Java中集合類的區別,請高手詳解

ArrayList 實現List接口 ,隨著向 ArrayList 中不斷添加元素,其容量也自動增長

Vector向量 不過我是不太喜歡這個類

HashMap實現Map接口--可以說內存就是壹個HashMap

HashTable實現壹個哈希表,該哈希表將鍵映射到相應的值

Set壹個不包含重復元素的容器

HashMap, HashTable都是“Key-Value對”形式的

Vector和ArrayList區別

Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用來表示壹組數量可變的對象應用的集合,並且可以隨機地訪問其中的元素。

Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而ArrayList的方法不是,由於線程的同步必然要影響性能,因此,ArrayList的性能比Vector好。

當Vector或ArrayList中的元素超過它的初始大小時,Vector會將它的容量翻倍,而ArrayList只增加50%的大小,這樣,ArrayList就有利於節約內存空間。

Hashtable和HashMap的區別

Hashtable和HashMap它們的性能方面的比較類似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。

ArrayList和LinkedList的區別

對於處理壹列數據項,Java提供了兩個類ArrayList和LinkedList, ArrayList的內部實現是基於內部數組Object[], 所以從概念上講,它更象數組,但LinkedList的內部實現是基於壹組連接的記錄,所以,它更象壹個鏈表結構,所以,它們在性能上有很大的差別。

從上面的分析可知,在ArrayList的前面或中間插入數據時,妳必須將其後的所有數據相應的後移,這樣必然要花費較多時間,所以,當妳的操作是在壹列 數據的後面添加數據而不是在前面或中間,並且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能

而訪問鏈表中的某個元素時,就必須從鏈表的壹端開始沿著連接方向壹個壹個元素地去查找,直到找到所需的元素為止,所以,當妳的操作是在壹列數據的前面或中間添加或刪除數據,並且按照順序訪問其中的元素時,就應該使用LinkedList了。

如果在編程中,1,2兩種情形交替出現,這時,妳可以考慮使用List這樣的通用接口,而不用關心具體的實現,在具體的情形下,它的性能由具體的實現來保證。

配置集合類的初始大小

在Java集合框架中的大部分類的大小是可以隨著元素個數的增加而相應的增加的,我們似乎不用關心它的初始大小,但如果我們考慮類的性能問題時,就壹定要考慮盡可能地設置好集合對象的初始大小,這將大大提高代碼的性能。

比如,Hashtable缺省的初始大小為101,載入因子為0.75,即如果其中的元素個數超過75個,它就必須增加大小並重新組織元素,所以,如果妳 知道在創建壹個新的Hashtable對象時就知道元素的確切數目如為110,那麽,就應將其初始大小設為110/0.75=148,這樣,就可以避免重 新組織內存並增加大小。

  • 上一篇:壹道C++編程題目,求大神幫忙,有沒有簡單點的算法,求程序!!答得好可以加分~~~
  • 下一篇:ABB變頻器參數設計詳細方法
  • copyright 2024編程學習大全網