1
resposta

E se eu quisesse ordenar pelo tamanho da string do titulo da aula

tentei navegar no atributo do titulo da aula e não foi possível.

aulas.sort(Comparator.comparing(Aula::getTitulo.length)); ou aulas.sort(Comparator.comparing(Aula::getTitulo.length()));

a solução seria criar um método na classe Aula para fazer essa ordenação? public int getTamanho() { return titulo.length(); }

aulas.sort(Comparator.comparing(Aula::getTamanho));

1 resposta

Olá, Ulisses!

A abordagem que você tentou utilizar com Comparator.comparing(Aula::getTitulo.length) está quase correta, mas falta um pequeno detalhe.

Para acessar o tamanho da string do título da aula, você precisa utilizar uma expressão lambda dentro do Comparator.comparing. A forma correta seria Comparator.comparing(aula -> aula.getTitulo().length()).

Então, o código ficaria assim:

aulas.sort(Comparator.comparing(aula -> aula.getTitulo().length()));

Dessa forma, você está passando uma função que retorna o tamanho da string do título da aula para o método Comparator.comparing, que fará a ordenação corretamente.

Não é necessário criar um método na classe Aula para fazer essa ordenação. Utilizar uma expressão lambda é uma forma mais enxuta e eficiente de resolver o problema.

Bons estudos!