Menu
Coddy logo textTech

Rückblick – Benutzerdefinierte Sortierung

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 46 von 87.

challenge icon

Aufgabe

Einfach

Erstellen wir einen Buchsammlungsmanager, der alles zusammenführt, was du über spezielle Methoden und das Sortieren gelernt hast. Du erstellst eine Book-Klasse mit passenden Methoden toString(), equals(), hashCode() und einer natürlichen Sortierung über Comparable sowie externe Komparatoren für flexible Sortieroptionen.

Du organisierst deinen Code über vier Dateien:

  • Book.java: Erstelle eine Klasse, die ein Buch mit drei privaten Feldern darstellt: title (String), author (String) und year (int). Füge einen Konstruktor und Getter für alle Felder hinzu.

    Deine Book-Klasse sollte Comparable<Book> implementieren und eine natürliche Sortierung nach year in aufsteigender Reihenfolge verwenden (älteste zuerst).

    Überschreibe toString(), sodass Folgendes zurückgegeben wird: [title] by [author] ([year])

    Überschreibe equals(), sodass zwei Bücher gleich sind, wenn sie denselben title UND denselben author haben. Überschreibe hashCode() mit Objects.hash() und denselben Feldern.

  • TitleComparator.java: Erstelle einen Komparator, der Bücher alphabetisch nach dem Titel in aufsteigender Reihenfolge (A bis Z) sortiert.
  • AuthorComparator.java: Erstelle einen Komparator, der Bücher alphabetisch nach dem Autor in aufsteigender Reihenfolge (A bis Z) sortiert.
  • Main.java: Führe alles zusammen! Du erhältst Eingaben für drei Bücher, jeweils in einer eigenen Zeile im Format: title,author,year

    Erstelle eine ArrayList von Büchern und demonstriere alle drei Sortieransätze:

    1. Sortiere mithilfe der natürlichen Sortierung (nach dem Jahr) und gib jedes Buch aus
    2. Gib eine leere Zeile aus
    3. Sortiere nach Titel mithilfe von TitleComparator und gib jedes Buch aus
    4. Gib eine leere Zeile aus
    5. Sortiere nach Autor mithilfe von AuthorComparator und gib jedes Buch aus

Du erhältst drei Eingabezeilen, die jeweils Buchdaten im Format title,author,year enthalten.

Zum Beispiel: 1984,George Orwell,1949

Denke daran, java.util.Objects in Book.java, java.util.Comparator in deinen Komparator-Dateien sowie java.util.ArrayList, java.util.Collections und java.util.Scanner in Main.java zu importieren.

Probier es selbst

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Drei Bücher aus der Eingabe lesen
        String line1 = scanner.nextLine();
        String line2 = scanner.nextLine();
        String line3 = scanner.nextLine();
        
        // TODO: Jede Zeile parsen, um Titel, Autor und Jahr zu extrahieren
        // Hinweis: Verwenden Sie split(","), um die Werte zu trennen
        
        // TODO: Book-Objekte aus den geparsten Daten erstellen
        
        // TODO: Eine ArrayList erstellen und alle drei Bücher hinzufügen
        
        // TODO: Nach natürlicher Ordnung sortieren (nach Jahr) und jedes Buch ausgeben
        
        // TODO: Eine Leerzeile ausgeben
        
        // TODO: Nach Titel mit TitleComparator sortieren und jedes Buch ausgeben
        
        // TODO: Eine Leerzeile ausgeben
        
        // TODO: Nach Autor mit AuthorComparator sortieren und jedes Buch ausgeben
    }
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Java-Compiler