Java集合框架常見面試

1.HashMap 和 ConcurrentHashMap 的區別

  •  ConcurrentHashMap對整個桶數組進行了分割分段(Segment),然後在每一個分段上都用lock鎖進行保護,相對於HashTable的synchronized鎖的粒度更精細了一些,併發性能更好,而HashMap沒有鎖機制,不是線程安全的。(JDK1.8之後ConcurrentHashMap啓用了一種全新的方式實現,利用CAS算法。)
  •   HashMap的鍵值對允許有null,但是ConCurrentHashMap都不允許。

2.List,Set,Map三者的區別及總結

  • List:對付順序的好幫手

List接口存儲一組不唯一(可以有多個元素引用相同的對象),有序的對象

  • Set:注重獨一無二的性質

不允許重複的集合。不會有多個元素引用相同的對象。

  • Map:用Key來搜索的專家

使用鍵值對存儲。Map會維護與Key有關聯的值。兩個Key可以引用相同的對象,但Key不能重複,典型的Key是String類型,但也可以是任何對象。

 

3.HashMap 和 Hashtable 的區別

 

  • HashMap是非線程安全的,HashTable是線程安全的;HashTable內部的方法基本都經過synchronized修飾。
  • 因爲線程安全的問題,HashMap要比HashTable效率高一點,HashTable基本被淘汰。
  • HashMap允許有null值的存在,而在HashTable中put進的鍵值只要有一個null,直接拋出NullPointerException。

Hashtable和HashMap有幾個主要的不同:線程安全以及速度。僅在你需要完全的線程安全的時候使用Hashtable,而如果你使用Java5或以上的話,請使用ConcurrentHashMap

 

 

 

 

 

 

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