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

¡Vamos a construir un gestor de colección 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(), hashCode() adecuados y un orden natural a través de Comparable, además de comparadores externos para 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 Book debe implementar Comparable<Book> con un orden natural por year en orden ascendente (el más antiguo primero).

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

    Sobrescribe equals() para que dos libros sean iguales cuando tengan el mismo title Y el mismo 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únelo todo! Recibirás la entrada de tres libros, cada uno en una línea separada 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