Menu
Coddy logo textTech

Recapitulação - Ordenação Personalizada

Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy — lição 46 de 87.

challenge icon

Desafio

Fácil

Vamos construir um gerenciador de coleção de livros que reúne tudo o que você aprendeu sobre métodos especiais e ordenação. Você criará uma classe Book com os métodos toString(), equals(), hashCode() adequados e ordenação natural via Comparable, além de comparadores externos para opções de ordenação flexíveis.

Você organizará seu código em quatro arquivos:

  • Book.java: Crie uma classe representando um livro com três campos privados: title (String), author (String) e year (int). Inclua um construtor e getters para todos os campos.

    Sua classe Book deve implementar Comparable<Book> com ordenação natural por year em ordem crescente (mais antigo primeiro).

    Sobrescreva toString() para retornar: [title] by [author] ([year])

    Sobrescreva equals() para que dois livros sejam iguais quando tiverem o mesmo title E author. Sobrescreva hashCode() usando Objects.hash() com os mesmos campos.

  • TitleComparator.java: Crie um comparador que ordene os livros alfabeticamente por título em ordem crescente (A a Z).
  • AuthorComparator.java: Crie um comparador que ordene os livros alfabeticamente por autor em ordem crescente (A a Z).
  • Main.java: Reúna tudo! Você receberá a entrada para três livros, cada um em uma linha separada no formato: title,author,year

    Crie um ArrayList de livros e demonstre todas as três abordagens de ordenação:

    1. Ordene usando a ordenação natural (por ano) e imprima cada livro
    2. Imprima uma linha vazia
    3. Ordene por título usando TitleComparator e imprima cada livro
    4. Imprima uma linha vazia
    5. Ordene por autor usando AuthorComparator e imprima cada livro

Você receberá três linhas de entrada, cada uma contendo dados do livro no formato: title,author,year

Por exemplo: 1984,George Orwell,1949

Lembre-se de importar java.util.Objects em Book.java, java.util.Comparator em seus arquivos de comparador, e java.util.ArrayList, java.util.Collections e java.util.Scanner em Main.java.

Experimente você mesmo

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);
        
        // Ler três livros da entrada
        String line1 = scanner.nextLine();
        String line2 = scanner.nextLine();
        String line3 = scanner.nextLine();
        
        // TODO: Analisar cada linha para extrair título, autor e ano
        // Dica: Use split(",") para separar os valores
        
        // TODO: Criar objetos Book a partir dos dados analisados
        
        // TODO: Criar um ArrayList e adicionar todos os três livros
        
        // TODO: Ordenar usando a ordenação natural (por ano) e imprimir cada livro
        
        // TODO: Imprimir uma linha vazia
        
        // TODO: Ordenar por título usando TitleComparator e imprimir cada livro
        
        // TODO: Imprimir uma linha vazia
        
        // TODO: Ordenar por autor usando AuthorComparator e imprimir cada livro
    }
}

Todas as lições de Programação Orientada a Objetos