Récapitulatif - Tri personnalisé
Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy — leçon 46 sur 87.
Défi
FacileConstruisons un gestionnaire de collection de livres qui rassemble tout ce que vous avez appris sur les méthodes spéciales et le tri. Vous allez créer une classe Book avec les méthodes toString(), equals(), hashCode() appropriées, et un ordre naturel via Comparable, ainsi que des comparateurs externes pour des options de tri flexibles.
Vous organiserez votre code sur quatre fichiers :
Book.java: Créez une classe représentant un livre avec trois champs privés :title(String),author(String), etyear(int). Incluez un constructeur et des getters pour tous les champs.Votre classe Book doit implémenter
Comparable<Book>avec un ordre naturel paryearpar ordre croissant (le plus ancien en premier).Surchargez
toString()pour retourner :[title] by [author] ([year])Surchargez
equals()pour que deux livres soient égaux lorsqu'ils ont le mêmetitleET le mêmeauthor. SurchargezhashCode()en utilisantObjects.hash()avec les mêmes champs.TitleComparator.java: Créez un comparateur qui trie les livres par ordre alphabétique de titre par ordre croissant (de A à Z).AuthorComparator.java: Créez un comparateur qui trie les livres par ordre alphabétique d'auteur par ordre croissant (de A à Z).Main.java: Rassemblez le tout ! Vous recevrez en entrée les données de trois livres, chacun sur une ligne séparée au format :title,author,yearCréez une
ArrayListde livres et démontrez les trois approches de tri :- Triez en utilisant l'ordre naturel (par année) et affichez chaque livre
- Affichez une ligne vide
- Triez par titre en utilisant
TitleComparatoret affichez chaque livre - Affichez une ligne vide
- Triez par auteur en utilisant
AuthorComparatoret affichez chaque livre
Vous recevrez trois lignes d'entrée, chacune contenant les données d'un livre au format : title,author,year
Par exemple : 1984,George Orwell,1949
N'oubliez pas d'importer java.util.Objects dans Book.java, java.util.Comparator dans vos fichiers de comparateurs, et java.util.ArrayList, java.util.Collections, et java.util.Scanner dans Main.java.
Essayez vous-même
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);
// Lire trois livres à partir de l'entrée
String line1 = scanner.nextLine();
String line2 = scanner.nextLine();
String line3 = scanner.nextLine();
// TODO: Analyser chaque ligne pour extraire le titre, l'auteur et l'année
// Astuce : Utilisez split(",") pour séparer les valeurs
// TODO: Créer des objets Book à partir des données analysées
// TODO: Créer une ArrayList et ajouter les trois livres
// TODO: Trier en utilisant l'ordre naturel (par année) et afficher chaque livre
// TODO: Afficher une ligne vide
// TODO: Trier par titre en utilisant TitleComparator et afficher chaque livre
// TODO: Afficher une ligne vide
// TODO: Trier par auteur en utilisant AuthorComparator et afficher chaque livre
}
}Toutes les leçons de Programmation Orientée Objet
1Fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses vs ObjetsLe mot-clé thisMéthodesChamps (Attributs)Méthode constructeurSurcharge de constructeurRécapitulatif - Calculatrice simple4Héritage
Héritage de base (extends)Le mot-clé superRedéfinition de méthode (@Override)Chaînage de constructeursLa classe ObjectHéritage simple et multiniveauPourquoi pas d'héritage multiple de classesRécapitulatif - Hiérarchie des employés7Méthodes spéciales et classe Object
Méthode toString()equals() et hashCode()Méthode clone()compareTo() et ComparableInterface ComparatorRécapitulatif - Tri personnalisé2Modificateurs d'accès et Encapsulation
Aperçu des niveaux d'accèsMéthodes Getter et SetterMasquage d'informationsLe mot-clé finalRécapitulatif - Gestionnaire de compte bancaire5Polymorphisme
Bases de la surcharge de méthodesRedéfinition de méthodes (Run-Time)Upcasting et DowncastingL'opérateur instanceofClasses et méthodes abstraitesRécapitulatif - Calculateur de formes8Concepts avancés de la POO
Composition vs HéritageAgrégation vs CompositionClasses internes, imbriquées et anonymesEnums et méthodes d'EnumRecords (Java 16+)Classes scellées (Java 17+)11Patrons de conception, partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FabriquePatron MonteurPatron ObservateurPatron Stratégie3Propriétés de classe et membres statiques
Variables d'instance vs variables statiquesMéthodes statiquesBlocs statiquesConstantes (static final)Récapitulatif - Compteur et utilitaire6Interfaces et Classes Abstraites
Introduction aux InterfacesImplémentation d'InterfacesImplémentation d'Interfaces MultiplesDefault et Static dans les InterfacesClasses Abstraites vs InterfacesInterfaces FonctionnellesRécapitulatif - Système de Paiement9La généricité
Introduction à la généricitéClasses génériquesMéthodes génériquesParamètres de type bornésWildcards (?, extends, super)Récapitulatif - Conteneur générique12Patrons de conception, partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Template MethodPatron ÉtatPatron CompositePatron Itérateur