1.ArrayList底層是基於數據的,對於查詢可以快速的定位到元素,對於插入和刪除需要數據移動性能較差(底層基於數組,動態擴容)
2.LinkedList底層是基於鏈表的,對於查詢需要遍歷鏈表,性能較差,對於插入和刪除只需要修改指針指向即可。
HashMap1.7底層結構是:數組+鏈表
1.8底層結構是:數組+鏈表+紅黑樹,當鏈表長度達到8時,變成紅黑樹
HashMap和HashTable的區別:
由於Hashtable是線程安全的也是synchronized,所以在單線程環境下它比HashMap要慢。如果你不需要同步,只需要單一線程,那么使用HashMap性能要好過Hashtable。
1)key和value的取值范圍不同
HashMap和HashTable都是基於哈希表來實現鍵值映射的工具類,底層都是哈希表結構。
HashMap允許鍵為null,值為null,對於HashMap如果使用get方法返回null,並不能表明HashMap不存在這個key,有可能是鍵對應的值為null。
HashTable則不允許null鍵和null值。
2)HashMap是非synchronized的,而HashTable是synchronized的。
HashMap和TreeMap的區別:
1)HashMap和TreeMap(TreeMap:基於紅黑樹實現的,紅黑樹總是處於平衡的狀態)的區別:
HashMap是通過hashcode()對其內容進行快速查找,hashmap中的數據是沒有順序的。
TreeMap中所有的元素都是有某一固定順序的,如果需要得到一個有序的結果,就應該使用treemap。
2)HashMap和TreeMap都是線程不安全的。
3)HashMap:適用於Map插入,刪除,定位元素;
TreeMap:適用於按自然順序或自定義順序遍歷鍵(key);
4)總結
HashMap通常比TreeMap快一點(樹和哈希表的數據結構使然),建議多使用HashMap,在需要排序的Map時候才用TreeMap。