ArrayList、Vector、LinkedList、HashMap、HashTable的存儲性能和特性


ArrayList和Vector都是使用數組方式存儲數據,次數組元素大於實際存儲的數據以便添加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由於使用了synchronized方法(線程安全),通過性能上校ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項即可,所以插入速度較快。

HashMap和HashTable的區別:

二者都實現了 Map 接口,是將惟一鍵映射到特定的值上;
主要區別在於:
1)HashMap 沒有排序,允許一個 null 鍵和多個 null 值 , 而Hashtable 不允許;
2)HashMap 把 Hashtable 的 contains 方 法 去 掉 了 , 改 成containsvalue 和 containsKey, 因為 contains 方法容易讓人引起誤解;
3)Hashtable 繼承自 Dictionary 類,HashMap 是 Java1.2 引進的Map 接口的實現;
4)Hashtable 的方法是 Synchronized ,而 HashMap 不是,在多個線程訪問 Hashtable 時,不需要自己為它的方法實現同步, 而HashMap 就必須為之提供外同步。 Hashtable 和 HashMap 采用 的hash/rehash 算法大致一樣,所以性能不會有很大的差異。

 

需要了解的知識

1、外同步

外同步法是指由發送端發送專門的同步信息(常被稱為導頻),接收端把這個導頻提取出來作為同步信號的方法。由於導頻本身並不包含所要傳送的信息,對頻率和功率有限制,要求導頻盡可能小地影響信息傳送,且便於提取同步信息。外同步法主要在載波同步及位同步系統中應用。

2、自同步法

自同步法是指發送端不發送專門的同步信息,接收端設法從接收到的信號中提取同步信息的方法。這種方法效率高,但收端設備相對外同步法較為復雜。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM