テキストエディタで最後の操作を取り消す
多くのテキストエディタでは、変更履歴をさかのぼって確認し、必要に応じて抜けている単語を挿入できます。ListIterator を使うと、操作のリストを後ろ向きにたどり、必要な箇所に修正を挿入できます。
この演習では、単語のリストを逆順に走査し、"error" を見つけたら、その直前に correction を挿入して、テキストエディタの取り消し操作を再現します。
この演習はコースの一部です
Java の入出力とストリーム
演習の手順
textHistoryリストの末尾から開始するListIteratorオブジェクトを作成します。textHistoryリストで、さらに前の要素があるかを確認します。- ひとつ前の要素を取得し、
ListIteratorを後退させます。 - 要素
errorの前に新しい要素correctionを挿入します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
public class TextEditorUndo {
public static void main(String[] args) {
ArrayList textHistory = new ArrayList<>();
textHistory.add("Hello");
textHistory.add("error");
textHistory.add("world");
// Create ListIterator starting from the end of the list
ListIterator it = textHistory.____(textHistory.____());
// Check if more elements are available in reverse order
while (____.____()) {
// Retrieve previous element
String word = ____.____();
if (word.equals("error")) {
// Insert "correction" before "error"
____.____("correction");
}
}
System.out.println(textHistory);
}
}