GapContent

GapContent (갭 콘텐츠)

emacs와 비슷한 갭 버퍼(gapped buffer)를 사용해 구현한 AbstractDocument.Content 인터페이스 구현입니다.

출처: Java API Reference

본문

기본 저장소는 어딘가에 갭이 있는 유니코드 문자 배열입니다. 대부분의 변경이 같은 위치에서 일어나는 일반적 동작을 활용하기 위해 갭이 변경 위치로 이동합니다. 갭 경계에서 일어나는 변경은 일반적으로 저렴하며, 갭을 이동하는 것이 변경을 수용하도록 배열 내용을 직접 이동하는 것보다 대체로 저렴합니다.

위치 추적 변경도 일반적으로 유지하기 쉽습니다. Position 구현(마크)은 배열 인덱스를 저장하고 현재 갭 위치에서 순차적 위치를 쉽게 계산할 수 있습니다. 변경은 갭이 이동할 때만 기존·새 갭 경계 사이의 마크를 갱신하면 되므로 대체로 저렴합니다.

마크는 정렬된 상태로 저장되어 이진 검색으로 빠르게 찾을 수 있습니다. 이는 마크 추가 비용을 높이지만 마크 갱신 비용을 낮춥니다.

주요 메서드·상세 (Methods & details)

주요 메서드는 텍스트를 얻거나 삽입·제거하는 getChars(int, int, Segment)/insertString(int, String)/remove(int, int), 길이를 얻는 length(), 위치를 만드는 createPosition(int), 갭 크기를 관리하는 getGapStart() 등이 있습니다. AbstractDocument.Content 계약을 구현합니다.

더 알아보기 (Learn more)

Java 공식 API