たとえば、任意String
の に対して
val s = "abde"
c: Char
の後に、位置 2 に文字を挿入するb
方法
アップデート
ランダムな位置で複数の効率的な挿入と削除を行うには、どの Scala コレクションを考慮する必要がありますか? String
( aがそのコレクションに変換される可能性があると仮定します。)
たとえば、任意String
の に対して
val s = "abde"
c: Char
の後に、位置 2 に文字を挿入するb
方法
アップデート
ランダムな位置で複数の効率的な挿入と削除を行うには、どの Scala コレクションを考慮する必要がありますか? String
( aがそのコレクションに変換される可能性があると仮定します。)
これを試して
val (fst, snd) = s.splitAt(2)
fst + 'c' + snd
Rope データ構造は、特に挿入と削除に関して、(非常に) 大きな文字列での重い操作にString
代わる有効な方法であることが証明されています。StringBuffer
Scalazにはclass Rope[A]
( APIとRope.scalaを参照) とclass WrappedRope[A]
( APIを参照) が含まれており、ロープ文字列に対する多数の操作が含まれています。
Java での実装にはhttp://ahmadsoft.org/ropes/が含まれます。この Java 実装のベンチマーク調査は、http://www.ibm.com/developerworks/library/j-ropes/にあります。
ひもに代わるロープに関する出版物は、http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.9450&rep=rep1&type=pdfにあります。