Java Map集合面試題彙總

1、 你都知道哪些常用的Map集合?
HashMap、HashTable、LinkedHashMap、ConcurrentHashMap。

2、Collection集合接口和Map接口有什麼關係?
沒關係,Collection是List、Set父接口不是Map父接口。

3、HashMap是線程安全的嗎?線程安全的Map都有哪些?性能最好的是哪個?
HashMap不是線程安全的。線程安全的有HashTable、ConcurrentHashMap、SynchronizedMap,性能最好的是ConcurrentHashMap。

4、使用HashMap有什麼性能問題嗎?
使用HashMap要注意避免集合的擴容,它會很耗性能,根據元素的數量給它一個初始大小的值。

5、HashMap的數據結構是怎樣的?默認大小是多少?內部是怎麼擴容的?
HashMap是數組和鏈表組成的,默認大小爲16,當hashmap中的元素個數超過數組大小*loadFactor(默認值爲0.75)時就會把數組的大小擴展爲原來的兩倍大小,然後重新計算每個元素在數組中的位置。

6、怎麼按添加順序存儲元素?怎麼按A-Z自然順序存儲元素?怎麼自定義排序?
按添加順序使用LinkedHashMap,按自然順序使用TreeMap,自定義排序TreeMap(Comparetor c)。

7、HashMap的鏈表結構設計是用來解決什麼問題的?
HashMap的鏈表結構設計是用來解決key的hash衝突問題的。

8、HashMap的鍵、值可以爲NULL嗎?HashTable呢?
HashMap的鍵值都可以爲NULL,HashTable不行。

9、HashMap使用對象作爲key,如果hashcode相同會怎麼處理?
key的hash衝突,如果key equals一致將會覆蓋值,不一致就會將值存儲在key對應的鏈表中。

10、HashMap中的get操作是什麼原理?
先根據key的hashcode值找到對應的鏈表,再循環鏈表,根據key的hash是否相同且key的==或者equals比較操作找到對應的值。


轉載自:https://www.jianshu.com/p/3dfabb977bf6
作者:嘻哈辣
來源:簡書

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