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]
 
            