Rückblick – Benutzerdefinierte Sortierung
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 46 von 87.
Aufgabe
EinfachErstellen 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) undyear(int). Füge einen Konstruktor und Getter für alle Felder hinzu.Deine Book-Klasse sollte
Comparable<Book>implementieren und eine natürliche Sortierung nachyearin 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 denselbentitleUND denselbenauthorhaben. ÜberschreibehashCode()mitObjects.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,yearErstelle eine
ArrayListvon Büchern und demonstriere alle drei Sortieransätze:- Sortiere mithilfe der natürlichen Sortierung (nach dem Jahr) und gib jedes Buch aus
- Gib eine leere Zeile aus
- Sortiere nach Titel mithilfe von
TitleComparatorund gib jedes Buch aus - Gib eine leere Zeile aus
- Sortiere nach Autor mithilfe von
AuthorComparatorund 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
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler