5 删除資料
從源碼可以看出删除有兩種情景:
删除位置等于takeIndex,直接将該位元素置 null ,并重新計算 takeIndex
找到要删除元素的下一個,計算删除元素和 putIndex 的關系,若下一個元素
是 putIndex,将 putIndex 的值修改成删除位
非 putIndex,将下一個元素往前移動一位
6 總結
ArrayBlockingQueue 是一種循環隊列,通過維護隊首、隊尾的指針,來優化插入、删除,進而使時間複雜度為O(1).
從源碼可以看出删除有兩種情景:
删除位置等于takeIndex,直接将該位元素置 null ,并重新計算 takeIndex
找到要删除元素的下一個,計算删除元素和 putIndex 的關系,若下一個元素
是 putIndex,将 putIndex 的值修改成删除位
非 putIndex,将下一個元素往前移動一位
ArrayBlockingQueue 是一種循環隊列,通過維護隊首、隊尾的指針,來優化插入、删除,進而使時間複雜度為O(1).