Menu
Coddy logo textTech

Riepilogo - Ordinamento personalizzato

Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 46 di 87.

challenge icon

Sfida

Facile

Creiamo un gestore di raccolte di libri che riunisce tutto ciò che hai imparato sui metodi speciali e sull'ordinamento. Creerai una classe Book con toString(), equals(), hashCode() implementati correttamente e ordinamento naturale tramite Comparable, oltre a comparatori esterni per opzioni di ordinamento flessibili.

Organizzerai il codice in quattro file:

  • Book.java: crea una classe che rappresenti un libro con tre campi privati: title (String), author (String) e year (int). Includi un costruttore e getter per tutti i campi.

    La tua classe Book dovrebbe implementare Comparable<Book> con ordinamento naturale per year in ordine crescente (dal più vecchio al più recente).

    Sovrascrivi toString() in modo che restituisca: [title] by [author] ([year])

    Sovrascrivi equals() in modo che due libri siano uguali quando hanno lo stesso title E author. Sovrascrivi hashCode() usando Objects.hash() con gli stessi campi.

  • TitleComparator.java: crea un comparatore che ordini alfabeticamente i libri per titolo in ordine crescente (dalla A alla Z).
  • AuthorComparator.java: crea un comparatore che ordini alfabeticamente i libri per autore in ordine crescente (dalla A alla Z).
  • Main.java: metti insieme tutto! Riceverai i dati di tre libri in input, ciascuno su una riga separata, nel formato: title,author,year

    Crea un ArrayList di libri e mostra tutti e tre i metodi di ordinamento:

    1. Ordina usando l'ordinamento naturale (per anno) e stampa ciascun libro
    2. Stampa una riga vuota
    3. Ordina per titolo usando TitleComparator e stampa ciascun libro
    4. Stampa una riga vuota
    5. Ordina per autore usando AuthorComparator e stampa ciascun libro

Riceverai tre righe di input, ciascuna contenente i dati di un libro nel formato: title,author,year

Per esempio: 1984,George Orwell,1949

Ricordati di importare java.util.Objects in Book.java, java.util.Comparator nei file dei comparatori e java.util.ArrayList, java.util.Collections e java.util.Scanner in Main.java.

Provalo tu

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);
        
        // Leggi tre libri dall'input
        String line1 = scanner.nextLine();
        String line2 = scanner.nextLine();
        String line3 = scanner.nextLine();
        
        // TODO: Analizza ogni riga per estrarre titolo, autore e anno
        // Suggerimento: usa split(",") per separare i valori
        
        // TODO: Crea oggetti Book dai dati estratti
        
        // TODO: Crea un ArrayList e aggiungi tutti e tre i libri
        
        // TODO: Ordina secondo l'ordinamento naturale (per anno) e stampa ogni libro
        
        // TODO: Stampa una riga vuota
        
        // TODO: Ordina per titolo usando TitleComparator e stampa ogni libro
        
        // TODO: Stampa una riga vuota
        
        // TODO: Ordina per autore usando AuthorComparator e stampa ogni libro
    }
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Java online