Menu
Coddy logo textTech

Resumen - Ordenamiento personalizado

Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy. Lección 46 de 87.

challenge icon

Desafío

Fácil

Construyamos un gestor de colecciones de libros que reúna todo lo que has aprendido sobre métodos especiales y ordenación. Crearás una clase Book con los métodos toString(), equals() y hashCode() implementados correctamente, y orden natural mediante Comparable, además de comparadores externos para ofrecer opciones de ordenación flexibles.

Organizarás tu código en cuatro archivos:

  • Book.java: Crea una clase que represente un libro con tres campos privados: title (String), author (String) y year (int). Incluye un constructor y getters para todos los campos.

    Tu clase Book debe implementar Comparable<Book> con orden natural por year en orden ascendente (del más antiguo al más reciente).

    Sobrescribe toString() para que devuelva: [title] by [author] ([year])

    Sobrescribe equals() para que dos libros sean iguales cuando tengan el mismo title Y author. Sobrescribe hashCode() usando Objects.hash() con los mismos campos.

  • TitleComparator.java: Crea un comparador que ordene los libros alfabéticamente por título en orden ascendente (de la A a la Z).
  • AuthorComparator.java: Crea un comparador que ordene los libros alfabéticamente por autor en orden ascendente (de la A a la Z).
  • Main.java: ¡Reúne todo! Recibirás los datos de tres libros, cada uno en una línea independiente, con el formato: title,author,year

    Crea un ArrayList de libros y demuestra los tres enfoques de ordenación:

    1. Ordena usando el orden natural (por año) e imprime cada libro
    2. Imprime una línea vacía
    3. Ordena por título usando TitleComparator e imprime cada libro
    4. Imprime una línea vacía
    5. Ordena por autor usando AuthorComparator e imprime cada libro

Recibirás tres líneas de entrada, cada una con los datos de un libro en el formato: title,author,year

Por ejemplo: 1984,George Orwell,1949

Recuerda importar java.util.Objects en Book.java, java.util.Comparator en tus archivos de comparadores, y java.util.ArrayList, java.util.Collections y java.util.Scanner en Main.java.

Pruébalo tú mismo

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);
        
        // Leer tres libros de la entrada
        String line1 = scanner.nextLine();
        String line2 = scanner.nextLine();
        String line3 = scanner.nextLine();
        
        // TODO: Analizar cada línea para extraer el título, el autor y el año
        // Sugerencia: Usar split(",") para separar los valores
        
        // TODO: Crear objetos Book a partir de los datos analizados
        
        // TODO: Crear un ArrayList y añadir los tres libros
        
        // TODO: Ordenar usando el orden natural (por año) e imprimir cada libro
        
        // TODO: Imprimir una línea vacía
        
        // TODO: Ordenar por título usando TitleComparator e imprimir cada libro
        
        // TODO: Imprimir una línea vacía
        
        // TODO: Ordenar por autor usando AuthorComparator e imprimir cada libro
    }
}

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Java online