モジュール java.desktop
パッケージ javax.swing.text

クラスGapContent

java.lang.Object
javax.swing.text.GapContent
すべての実装されたインタフェース:
Serializable, AbstractDocument.Content

public class GapContent extends Object implements AbstractDocument.Content, Serializable
emacsが使うものと類似したギャップ付きバッファを使って実装されたAbstractDocument.Contentインタフェースの実装です。 基礎となる記憶域は、どこかにギャップがあるUnicode文字の配列です。 ギャップは変更の位置に移動されるので、ほとんどの変更が同じ位置にある場所で、共通の動作を利用できるようになります。 ギャップ境界で生じる変更は一般的に簡単なものなので、配列の内容を直接移動して変更を適用するよりもギャップを移動する方が手間がかかりません。

また、変更を追跡する位置を管理するのも一般的に簡単です。 位置の実装(マーク)は配列インデックスを格納し、現在のギャップ位置から逐次位置を簡単に計算できます。 変更する必要があるのは、ギャップが移動されたときに古いギャップ境界と新しいギャップ境界の間のマークを更新する場合のみであるため、通常、マークの更新はかなり安価です。 マークはソートされた状態で格納されるので、2等分探索ですばやく見つけられます。 これはマークを追加する手間を増大させる一方で、マークの更新を維持する手間を減らします。