4

この投稿によると、ListBufferは最初と最後の要素を一定時間削除できると言われています。remove(0)APIリファレンスとListBufferソースコードを調べてきましたが、最初の要素の仕事をしている間に、最後の要素を一定時間で削除する方法がわかりません。最後の要素を削除する適切な方法は何でしょうか?

別の質問:ListBufferを反復処理しているときに、要素を効率的に削除することは可能ですか?Javaではそれを行うことができますIterator.remove()が、Scalaイテレーターにはメソッドがないようですremove()...

4

2 に答える 2

1

最初の質問には、残念ながら簡単な答えがあります。最後の要素を一定時間で削除することはできません。削除するには、最後の要素への参照が必要になるためです。(これは、リストの開始要素と終了要素を保持するラッパークラス内の単一リンクリストです。)

2番目の質問も同様に簡単で、おそらくがっかりしますIterator。Scalaのsは、単にコレクションのビューです。基になるコレクションは変更されません。(これは、「デフォルトでは不変、必要な場合にのみ変更可能」という哲学に沿ったものです。)

于 2012-10-16T19:56:34.327 に答える
1

あなたはで最後の要素を削除することができますtrimEnd(1)

于 2012-10-16T19:56:40.633 に答える