Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Dúvidas exercício 2

public class Titulo  implements Comparable<Titulo>{
    public 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.nome);
    }
}
import java.util.*;

public class main {
    public static void main(String[] args) {
        List<Titulo> listaNomes = new ArrayList<>();
        listaNomes.add(new Titulo("Amor"));
        listaNomes.add(new Titulo("Por"));
        listaNomes.add(new Titulo("Bichos"));
        listaNomes.add(new Titulo("Grandes"));
        Collections.sort(listaNomes);
        for (Titulo titulo : listaNomes) {
            System.out.println(titulo.nome);
        }
        listaNomes.sort(Comparator.reverseOrder());
        for (Titulo titulo : listaNomes) {
            System.out.println(titulo.nome);
        }
        System.out.println(listaNomes);

    }
}

Queria entender o por que neste caso foi necessário o uso do for para a impressão do Título, uma vez que se coloco para imprimir apenas apenas listanome ele me retorna:

[Exercicio_2.Titulo@3feba861, Exercicio_2.Titulo@5b480cf9, Exercicio_2.Titulo@6f496d9f, Exercicio_2.Titulo@723279cf]
1 resposta
solução!

Opa eai Lucas, blz? Então maninho o que ta acontecendo é que quando você vai imprimir seus títulos sem fornecer sua própria implementação do método toString() o javinha usa a implementação padrão do método toString(), que geralmente retorna o nome da classe seguido pelo endereço de memória do objeto. Para resolver isso é bem simples, basta que você gere um toString na sua classe Título