Map List Map的主要區別如下:
set List 是實現了Collection接口的子接口;Map本身就是一個接口;
list數據存放時有序的,允許有重復元素;set數據存放時無序的,不允許有重復數據;map是以鍵值對的形式存放,存放是無序的,key值不允許有重復的,value值可以有重復的;
list里面可以有任意的null值;set數據只允許有一個null值,如果多個數據都是null,那么只存在一個;map的key值只能有一個null值,value值可以有任意數量的null值;
實現類(只說幾個平時在用的)
list:ArrayList,LinkedList
set:HashSet,TreeSet
Map:HashMap,TreeMap
ArrayList和LinkedList的區別
ArrayList底層為數組結構,數據存在內存中的地址是連續的,所以查詢效率高,直接用數組下標就可以得到數據,而插入,刪除要移動操作位置前后的元素。
LinkedList底層為鏈表結構,數據存在內存中的地址不是連續的,查詢的時候需要通過指針一個一個去查找,效率沒有ArrayList高,但是插入,刪除操作的時候,只需要改變指針的指向即可,不需要移動操作位置前后元素。
ArrayList費空間的地方就是真實的數組長度要大於實際存儲的元素的長度,為了方便添加數據;而LinkedList費空間的地方是一個位置要存本身的數據還有存指向前后的指針;
HashMap和HashTable的區別
HashMap不是線程安全的,HashTable是線程安全的,內部的方法都是用synchronized修飾的,所以HashMap效率要比HashTable高;
HashMap允許鍵值為null,HashTable不允許,只要有為null就會報空指針;