hashmap如何實現的?
首先hashmap內部是由陣列+單向鍊錶結構組成,其中jdk1.8之後新增了紅黑樹進行優化處理。
它是執行緒不安全的(如要執行緒安全的map,可用concurrenthashmap(分段鎖處理)),允許key和value為空。
預設大小:16;
負載因子:0.75;
當儲存數量到達16*0.75時進行擴容,擴容到原先的2倍;
put
根據key的hash值找到對應的陣列位置,然後通過迴圈檢視該列表下是否存在該值,如果存在直接替換進行返回資料。如果不存在,將直接新增到該鍊錶的表頭。(插入第乙個元素時,進行初始化,計算該hashmap中陣列的大小。該大小必須為2的n次方)
get
根據key的hash值進行查詢到對應的陣列位置,然後通過遍歷其下鍊錶的值進行對比,通過==和equals進行對比。直到找到相同的key。
純手工,實時更新!
Java常見面試題 JVM
1.方法區 method area 方法區存放了要載入的類的資訊 如類名 修飾符等 靜態變數 建構函式 final定義的常量 類中的字段和方法等資訊。方法區是全域性共享的,在一定條件下也會被gc。當方法區超過它允許的大小時,就會丟擲outofmemory permgen space異常。在hotsp...
常見面試題
1.get和post的區別 1 本質區別 get是向伺服器請求資料,post是向伺服器傳送資料。2 伺服器獲取值的方式 get方式提交的資料,伺服器端使用request.querystring獲取變數的值。post方式提交的資料,伺服器端使用request.form獲取資料。3 安全性 get安全效...
常見面試題
1 一行 實現1 100之和 lst i for i in range 1,101 print sum lst 2 如何在乙個函式內部修改全域性變數?在函式內部新增 global 變數名 這樣就可以在本地作用域定義全域性作用域了 name 大明 def eat name1 global name n...