Menu
Coddy logo textTech

Zusammenfassung – Benutzerdefiniertes Sortieren

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

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen Buchsammlungs-Manager erstellen, der alles zusammenführt, was Sie über spezielle Methoden und Sortierung gelernt haben. Sie werden eine Book-Klasse mit ordnungsgemäßen toString(), equals(), hashCode() und natürlicher Ordnung über Comparable erstellen, sowie externe Komparatoren für flexible Sortieroptionen.

Sie werden Ihren Code über vier Dateien organisieren:

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

    Ihr Book sollte Comparable<Book> implementieren, mit natürlicher Sortierung nach year in aufsteigender Reihenfolge (ältestes zuerst).

    Überschreiben Sie toString(), um Folgendes zurückzugeben: [title] by [author] ([year])

    Überschreiben Sie equals(), sodass zwei Bücher gleich sind, wenn sie denselben title UND author haben. Überschreiben Sie hashCode() unter Verwendung von Objects.hash() mit denselben Feldern.

  • TitleComparator.java: Erstellen Sie einen Komparator, der Bücher alphabetisch nach Titel in aufsteigender Reihenfolge (A bis Z) sortiert.
  • AuthorComparator.java: Erstellen Sie einen Komparator, der Bücher alphabetisch nach Autor in aufsteigender Reihenfolge (A bis Z) sortiert.
  • Main.java: Bringen Sie alles zusammen! Sie erhalten Eingaben für drei Bücher, jedes in einer separaten Zeile im Format: title,author,year

    Erstellen Sie eine ArrayList von Büchern und demonstrieren Sie alle drei Sortieransätze:

    1. Sortieren Sie unter Verwendung der natürlichen Ordnung (nach Jahr) und geben Sie jedes Buch aus
    2. Geben Sie eine Leerzeile aus
    3. Sortieren Sie nach Titel unter Verwendung von TitleComparator und geben Sie jedes Buch aus
    4. Geben Sie eine Leerzeile aus
    5. Sortieren Sie nach Autor unter Verwendung von AuthorComparator und geben Sie jedes Buch aus

Sie erhalten drei Eingabezeilen, die jeweils Buchdaten im Format title,author,year enthalten.

Zum Beispiel: 1984,George Orwell,1949

Denken Sie daran, java.util.Objects in Book.java, java.util.Comparator in Ihren Komparator-Dateien und java.util.ArrayList, java.util.Collections sowie 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