Zusammenfassung – Benutzerdefiniertes Sortieren
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 46 von 87.
Aufgabe
EinfachLassen 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) undyear(int). Fügen Sie einen Konstruktor und Getter für alle Felder hinzu.Ihr Book sollte
Comparable<Book>implementieren, mit natürlicher Sortierung nachyearin 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 denselbentitleUNDauthorhaben. Überschreiben SiehashCode()unter Verwendung vonObjects.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,yearErstellen Sie eine
ArrayListvon Büchern und demonstrieren Sie alle drei Sortieransätze:- Sortieren Sie unter Verwendung der natürlichen Ordnung (nach Jahr) und geben Sie jedes Buch aus
- Geben Sie eine Leerzeile aus
- Sortieren Sie nach Titel unter Verwendung von
TitleComparatorund geben Sie jedes Buch aus - Geben Sie eine Leerzeile aus
- Sortieren Sie nach Autor unter Verwendung von
AuthorComparatorund 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
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas this-SchlüsselwortMethodenFelder (Attribute)Konstruktor-MethodeKonstruktor-ÜberladungRückblick – Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (extends)Das super-SchlüsselwortMethoden überschreiben (@Override)Konstruktor-VerkettungDie Object-KlasseEinfache & mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-InterfaceZusammenfassung – Benutzerdefiniertes Sortieren2Zugriffsmodifikatoren & Kapselung
Überblick über ZugriffsebenenGetter- und Setter-MethodenInformation HidingDas final-SchlüsselwortRückblick – Bankkonto-Manager5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenZusammenfassung – Formenrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, geschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Sealed Classes (Java 17+)11Design Patterns Teil 1
Einführung in Design PatternsSingleton-PatternFactory-PatternBuilder-PatternObserver-PatternStrategy-Pattern14Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung3Klasseneigenschaften & Statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Zusammenfassung – Zähler & Utility6Interfaces & Abstrakte Klassen
Einführung in InterfacesInterfaces implementierenImplementierung mehrerer InterfacesDefault- & statische Methoden in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesZusammenfassung - Zahlungssystem