我有一個ListBuffer[MyClass]
並將其用作隊列。Listbuffer行爲不直觀...如何解決?
現在考慮下面的代碼:
private def buildChunks(): Unit =
{
for(a <- 0 until buildQueue.size)
{
val chunk: Chunk = buildQueue(a)
chunk.init()
// buildQueue -= chunk
// buildQueue.remove(a)
}
}
我與理解的問題可以歸結爲以下兩行:
buildQueue -= chunk
buildQueue.remove(a)
他們都得到使用的ArrayOutOfBoundsException
如果(當然互斥的我做了不是一次使用它們!)
正如我所說(並且顧名思義),ListBuffer用作隊列,所以如果處理一個項目,我想從列表中刪除它。
我不明白,爲什麼這些行拋出ArrayOutOfBoundsException
我怎麼刪除一個項目呢?
如果你可以讓我明白這一點,我會很樂意用一個更漂亮的方法,如:
val chunk: Chunk = buildQueue.remove(a)
,但當然,這並不工作
你可以顯示'chunk.init()'的實現嗎? – ccheneson
@ccheneson由於'chunk.init()'不會更改ListBuffer/Queue,所以省略了詳細信息。它有什麼關係? – Sorona
我認爲'init'可以改變它裏面的隊列,但如果你說它不是,那很好。我相信Sascha Kolberg的解釋是正確的 – ccheneson