Menu
Coddy logo textTech

Récapitulatif - Tri personnalisé

Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy. Leçon 46 sur 87.

challenge icon

Défi

Facile

Construisons 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 des méthodes toString(), equals(), hashCode() correctement définies, ainsi qu’un ordre naturel via Comparable, et des comparateurs externes pour des options de tri flexibles.

Vous allez organiser votre code dans quatre fichiers :

  • Book.java : créez une classe représentant un livre avec trois champs privés : title (String), author (String) et year (int). Ajoutez un constructeur et des accesseurs pour tous les champs.

    Votre Book doit implémenter Comparable<Book> avec un ordre naturel selon year en ordre croissant (du plus ancien au plus récent).

    Redéfinissez toString() pour qu’elle renvoie : [title] by [author] ([year])

    Redéfinissez equals() afin que deux livres soient égaux lorsqu’ils ont le même title ET le même author. Redéfinissez hashCode() en utilisant Objects.hash() avec les mêmes champs.

  • TitleComparator.java : créez un comparateur qui trie les livres par titre, dans l’ordre alphabétique en ordre croissant (de A à Z).
  • AuthorComparator.java : créez un comparateur qui trie les livres par auteur, dans l’ordre alphabétique en ordre croissant (de A à Z).
  • Main.java : assemblez tout ! Vous recevrez les données de trois livres, chacune sur une ligne distincte, au format suivant : title,author,year

    Créez un ArrayList de livres et présentez les trois approches de tri :

    1. Triez en utilisant l’ordre naturel (par année), puis affichez chaque livre
    2. Affichez une ligne vide
    3. Triez par titre en utilisant TitleComparator, puis affichez chaque livre
    4. Affichez une ligne vide
    5. Triez par auteur en utilisant AuthorComparator, puis affichez chaque livre

Vous recevrez trois lignes d’entrée, chacune contenant les données d’un livre au format suivant : 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, ainsi que 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

Entraînez-vous par vous-même : Compilateur Java en ligne