集合框架面試總結

2021-10-08 07:04:03 字數 521 閱讀 2196

1、collection下list,set,還有什麼?

還有queue佇列

2、hashset是怎麼實現的?

底層利用hashmap來實現,用key作為元素儲存,value使用乙個final值。

3、hashmap為什麼儲存2的n次冪個空間?

hashmap是根據key的hash值決定key放到哪個桶中,通過hash&(length-1)公式計算得出,2的n次方一定是最高位1其它低位是0,這樣減1的時候才能得到01111這樣都是1的二進位制。這樣(n - 1) & hash的值是均勻分布的,可以減少hash衝突。

4、hashmap是怎麼實現的?

陣列+鍊錶+紅黑樹

5、arraylist擴容?

6、concurrenthashmap 和hashtable的執行緒安全有什麼不同

concurrenthashmap :jdk1.8的實現已經拋棄了segment分段鎖機制,利用cas+synchronized來保證併發更新的安全。資料結構採用:陣列+鍊錶+紅黑樹。

7、

java面試總結之集合框架

1.arraylist 採用了陣列的結構,查詢快,增刪慢 需要維護下標 執行緒不安全 2.linkedlist 採用了鍊錶的結構,增刪快,查詢慢 3.vector 陣列結構,執行緒安全的 4.hashset 實現了set介面,它不允許集合中出現重複元素。當我們提到hashset時,第一件事就是在將物...

集合框架總結

list 儲存有序,有索引,可以重複 arraylist 底層是陣列實現的,執行緒不安全,查詢和修改快,增和刪較慢 linkedlist 底層是鍊錶實現的,現成不安全,增和刪較快,查詢和修改較慢 vector 底層是陣列實現的,現成安全,增刪改查都較慢 如何查詢和修改多,用arraylist 如果增...

集合框架總結

問題1 集合和陣列的區別?collection主要有三個子介面 set 表示不允許有重複元素的集合,且無序 list 表示允許有重複元素的集合,且有序 queue 佇列,先進先出,jdk1.5新增,queue主要用於儲存資料,而不是處理資料 stack 繼承自vector,實現乙個後進先出的堆疊。特...