1
resposta

Ordenando com o método sort

import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.function.Consumer;

public class OrdenaStrings {

public static void main(String[] args) {

    List<String> palavras = new ArrayList<>();

    palavras.add("alura online");
    palavras.add("editora casa do codigo");
    palavras.add("caelum");


    Comparator<String> comparador = new comparadorPorTamanho();
    palavras.sort(comparador);

    Consumer<String> consumidor = new imprimiLista();
    palavras.forEach(consumidor);




}

}

class imprimiLista implements Consumer{

@Override
public void accept(String s) {
    System.out.println(s);
}

}

class comparadorPorTamanho implements Comparator{

@Override
public int compare(String s1, String s2) {
    if(s1.length() < s2.length())
        return -1;
    if(s1.length() > s2.length())
        return 1;
    return 0;
}

}

1 resposta

Bom dia Rogério.

Pelo código copiado aqui, faltou um pequeno detalhe nas classes imprimiLista e comparadorPorTamanho que é a declaração de tipo da interface a ser implementada. Como estamos trabalhando com string, basta ajustar:

imprimiLista DE: class imprimiLista implements Consumer{ PARA: class imprimiLista implements Consumer<String>{

comparadorPorTamanho DE: class comparadorPorTamanho implements Comparator{ PARA: class comparadorPorTamanho implements Comparator<String>

Outro ponto, que não impede a compilação mas foge da convenção do Java, é que o nome das classes devem sempre começar com letra maiúscula.

O restante está certinho, continue assim :)

Bons estudos!!