1
resposta

Perguntas e Resposta que POSSA TE destravar!

  1. Quem devo chamar para ordenar? R: Collections.sort()

  2. O que o Colletions.sort() precisa pra funcionar? R: Ele precisa de um parâmetro que sejam implementado com Comparable<T> (interface)

  3. O que é dentro da interface Comparable ? R: <> se chama diamante, ele serve pra especificar com qual tipo você vai trabalhar, mas porque T ? , T é um é um anotação genérico, poderia ter Sido (A, B, C, D etc... (Quando <T> está presente significa que devemos informar qual tipo iremos trabalhar, <String>, <Produto>, <QualquerOutraCoisa> ) e somos obrigado a passar com que tipo iremos trabalhar.

  4. O que a interface Comparable obriga implementar? R: um método chamado compareTo( T o );

  5. O que é (T) e (o) do compareTo(); R: T é tipo e o outroObjeto do mesmo tipo.

  6. Quem é outro Objeto?R: Relaxa, ganhafoto, quem cuida dessa parte é o sort, ele vai cuidar de tudo, vai pegar o outro objeto da lista e vai fazer ordenação, tudo que você tem que fazer é passar o que você quer comparar e como vai funcionar essa comparação (compareTo).

  7. compareTo() já esta presente em String. R: por isso se você for trabalhar com outro tipo, você vai ter que sobrescrever este método para explicar quem após, quem não se mexe, quem fica atrás na ordenação.

  8. sort cuida desses loops internos. R: você só tem que configurar (-1, 0, 1) no compare se não for uma String.

1 resposta

Oi, Caio! Tudo bem com você?

Obrigado por compartilhar as respostas para essas perguntas, que com certeza podem ajudar nossa comunidade Alura. Para ficar ainda mais claro, vamos a um exemplo prático, se você tem uma classe Titulo e deseja ordenar uma lista de títulos por nome, sua classe Titulo deve implementar Comparable<Titulo>. Dentro do método compareTo(), você pode comparar os nomes dos títulos usando this.getNome().compareTo(outroTitulo.getNome()). Exemplo de código:

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

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

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

    public String getNome() {
        return nome;
    }

    @Override
    public int compareTo(Titulo outroTitulo) {
        return this.nome.compareTo(outroTitulo.getNome());
    }

    public static void main(String[] args) {

        List<Titulo> listaDeTitulos = new ArrayList<>();
        listaDeTitulos.add(new Titulo("Java para Iniciantes"));
        listaDeTitulos.add(new Titulo("A Arte de Programar"));
        listaDeTitulos.add(new Titulo("Estruturas de Dados"));

        Collections.sort(listaDeTitulos);

        for (Titulo titulo : listaDeTitulos) {
            System.out.println(titulo.getNome());
        }
    }
}

Com isso, ao chamar Collections.sort(listaDeTitulos), seus títulos serão ordenados alfabeticamente pelo nome.

Conte com o apoio do Fórum na sua jornada.

Abraços e bons estudos!