天天看點

和阿裡面試官扯了半小時ArrayBlockingQueue源碼(下)5 删除資料6 總結

5 删除資料

和阿裡面試官扯了半小時ArrayBlockingQueue源碼(下)5 删除資料6 總結

從源碼可以看出删除有兩種情景:

删除位置等于takeIndex,直接将該位元素置 null ,并重新計算 takeIndex

找到要删除元素的下一個,計算删除元素和 putIndex 的關系,若下一個元素

是 putIndex,将 putIndex 的值修改成删除位

非 putIndex,将下一個元素往前移動一位

6 總結

ArrayBlockingQueue 是一種循環隊列,通過維護隊首、隊尾的指針,來優化插入、删除,進而使時間複雜度為O(1).

繼續閱讀