1
resposta

[Sugestão] Desafio: Collections.sort,LinkedList, Comparable, compareTo, sort e ArrayLists

Main.java:

package br.com.alura.desafio4;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import br.com.alura.desafio4.model.Titulo;

public class Main {
    public static void main(String[] args) {
        //Declaração de uma lista usando a interface List e a implementação ArrayList
        List listaInteiros = new ArrayList();
        
        //Adição de 10 a 0
        for(int i = 10; i > 0; i--) {
            System.out.println("Adicionando o número: " + i);
            listaInteiros.add(i);  
        }

        System.out.println("Lista de inteiros original: " + listaInteiros);
        //Ordenação da lista usando o método sort da classe Collections
        Collections.sort(listaInteiros);
        System.out.println("Lista de inteiros ordenada: " + listaInteiros);

//--------------------------------------------------------------------------------------------
        //Declaração de uma lista de títulos usando a interface List e a implementação ArrayList
        List listaTitulos = new ArrayList();
        listaTitulos.add(new Titulo("O Senhor dos Anéis", 1954));
        listaTitulos.add(new Titulo("A Sociedade do Anel", 1954));
        listaTitulos.add(new Titulo("As Duas Torres", 1954));
        listaTitulos.add(new Titulo("O Retorno do Rei", 1955));

        System.out.println("Lista de títulos original: " + listaTitulos);
        //Ordenação da lista de títulos usando o método sort da classe Collections, que utiliza o método compareTo da classe Titulo para comparar os nomes dos títulos
        Collections.sort(listaTitulos);
        System.out.println("Lista de títulos ordenada: " + listaTitulos);

//--------------------------------------------------------------------------------------------
        //Declaração de uma lista de frutas usando a interface List e a implementação ArrayList
        List trocaLista = new ArrayList();
        trocaLista.add("Banana");
        trocaLista.add("Abacaxi");
        trocaLista.add("Laranja");
        System.out.println("Lista de frutas com ArrayList: " + trocaLista);

        //Instanciação de uma nova lista usando a implementação LinkedList, passando a lista anterior como parâmetro para o construtor, o que cria uma nova lista com os mesmos elementos
        trocaLista = new LinkedList(trocaLista);
        System.out.println("Lista de frutas com LinkedList: " + trocaLista);

    }
}

Titulo.java:

package br.com.alura.desafio4.model;

public class Titulo implements Comparable<Titulo> {
    private String nome;

    public Titulo(String nome, int anoDeLancamento) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    //Sobrescrita do método compareTo da interface Comparable, que compara o nome do título atual com o nome do título passado como parâmetro, utilizando o método compareTo da classe String, que retorna um valor negativo se o nome do título atual for lexicograficamente menor que o nome do título passado como parâmetro, um valor positivo se for maior e zero se forem iguais
    //Lexicograficamente significa que a comparação é feita com base na ordem alfabética dos caracteres.
    @Override
    public int compareTo(Titulo o) {
        return this.nome.compareTo(o.getNome());
    }

    //Sobrescrita do método toString da classe Object, que retorna o nome do título, o que facilita a visualização dos títulos na lista quando ela é impressa
    @Override
    public String toString() {
        return this.nome;
    }
}
1 resposta

Olá, Estudante! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso da interface List para abstrair diferentes implementações em Java, utilizou muito bem o método Collections.sort para ordenar elementos e ainda compreendeu a importância da interface Comparable para definir critérios de comparação personalizados.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!