set,map,list解讀

面試經常被問到set,map,list這幾個常用的數據集。

1 set map list各自特點

set不按照特定方式排序,繼承於Collection並且無重複值,允許出現空值,無序體現在插入順序和遍歷順序不一致。

set不重複的原理:set存儲時候會對值進行一次hashcode操作,計算出哈希值,然後通過移位等運算,計算出這個值應該存儲的位置,如果當前位置未被佔據則直接存儲值,如果已經存在數據,則調用該元素的equals方法再次進行比較,如果返回true,則值重複不允許存儲,如果爲false則繼續添加。

list 元素按照線性方式存儲,繼承於Collection可以存在重複值。

map按照鍵值對來存儲,未繼承Collection。

2 set map list各自內容

set

set下面有hashSet,treeSet

list下面有ArrayList LinkList Vector

map下面有hashMap,treeMap,hashTable

set查找時候採用的是二分法查找,速度較快。treeSet存儲值時候會自動將值進行排序

(二分法查找,先在順序固定的數組中,取出中間值進行比較,如果小於(或者大於中間值)再取對應區域內的中間值進行比較以此類推)

hashSet是哈希表結構,treeSet是紅黑樹結構,所以爲有序的。hashSet和treeSet都是線程不安全的。

list

list分爲ArrayList和LinkedList。ArrayList爲數組,LinkedList爲鏈表,數組查找速度快,但是增刪慢,因爲移動一個後面相關的都需要移動。LinkedList查找速度慢,增刪快,LinkedList增刪只需要拆掉之前兩個數對應關係和新的建立連接就可以。

map

HashMap,HashTable,TreeMap,LinkedHashMap

HashTable無序但線程安全,值與鍵值都不能爲null

TreeMap基於紅黑樹進行排序的map,默認是升序

LinkedHashMap 相當於一個棧,先進後出

HashMap線程不安全。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章