1
resposta

[Projeto] Ordenando com Comparable

Classe Titulo
//    @Override
//    public int compareTo(Titulo outroTitulo) {
//        return Integer.compare(this.anoDeLancamento, outroTitulo.anoDeLancamento); // Crescente
//    }
//    @Override
//    public int compareTo(Titulo outroTitulo) {
//        return Integer.compare(outroTitulo.anoDeLancamento, this.anoDeLancamento); // Decrescente
//    }

//    @Override
//    public int compareTo(Titulo outroTitulo) {
//        return outroTitulo.getNome().compareTo(getNome()); // alfabetica decrescente
//    }

    @Override
    public int compareTo(Titulo outroTitulo) {
        return this.getNome().compareTo(outroTitulo.getNome()); // alfabetica crescente
    }
Classe Serie.java
@Override
    public int compareTo(Titulo outroTitulo) {
        return outroTitulo.getNome().compareTo(getNome()); // alfabetica decrescente
    }
Classe PrincipalComLista.java
ArrayList<Titulo> lista2 = new ArrayList<>();
       lista2.add(meuFilme);
       lista2.add(outroFilme);
       lista2.add(lost);
       Collections.sort(lista2);
       System.out.println("lista 2 = " + lista2);
1 resposta

Oi, Smalley! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Com o que você descreveu, ficou claro que você experimentou várias formas de ordenar a lista usando Comparable. É uma ótima forma de entender como a ordenação afeta o resultado final, seja por ano de lançamento ou por nome, em ordem crescente ou decrescente.

Uma dica interessante para o futuro é usar Comparator quando quiser ordenar com múltiplos critérios sem alterar a implementação da classe. Veja este exemplo:



Collections.sort(lista2, Comparator.comparing(Titulo::getAnoDeLancamento).thenComparing(Titulo::getNome));

Esse código ordena primeiro pelo ano de lançamento e, em caso de empate, pelo nome do título.

Alura

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