Laatste actie ongedaan maken in een teksteditor
Veel teksteditors laten je achteruit door wijzigingen navigeren en ontbrekende woorden invoegen wanneer dat nodig is. Met ListIterator kun je achteruit door een lijst met acties lopen en waar nodig correcties invoegen.
In deze oefening doorloop je een lijst met woorden in omgekeerde volgorde. Als je "error" tegenkomt, voeg je correction vóór dat woord in, als simulatie van een undo-bewerking in een teksteditor.
Deze oefening maakt deel uit van de cursus
Input/Output en streams in Java
Oefeninstructies
- Maak een
ListIterator-object voor de lijsttextHistory, beginnend vanaf het einde. - Controleer of er eerdere elementen beschikbaar zijn in de lijst
textHistory. - Haal het vorige element op en verplaats de
ListIteratoreen stap terug. - Voeg het nieuwe element
correctionin vóór het elementerror.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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);
}
}