Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Minha resolução

Fiz em duas classes uma com o método main e outra unindo os métodos Consumer, Comparator e UnaryOperator.

public class TesteJavaStrings {

    public static void main(String[] args) {

        List<String> palavras = new ArrayList<>();
        palavras.add("Java 8 na Alura");
        palavras.add("Fabio Lino");
        palavras.add("Alura");
        palavras.add("Testando novas funcoes");

//        for (String words : palavras) {
//            System.out.println(palavras);
//        }

        RegrasMetodo regras = new RegrasMetodo();
        System.out.println("******* Ordenando pelo tamanho da palavra ********");
        System.out.println("*******  Da maior para menor ********");
//        Consumer<String> consumidor = new ImprimeNaLinha();
        palavras.forEach(regras);

//        ComparadorPorTamanho comparador = new ComparadorPorTamanho();

        System.out.println("******* Em Ordem Alfabetica ********");
        palavras.sort(regras);        
        System.out.println(palavras);

        System.out.println("******* Regra UpperCase todas as String da lista ficam em caixa alta CAPSLOCK ********");
        palavras.replaceAll(regras);
        System.out.println(palavras);

    }

}

E a classe de Regras dos métodos

public class RegrasMetodo implements Consumer<String>, Comparator<String>, UnaryOperator<String> {

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

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

    }

    @Override
    public String apply(String t) {
        return t.toUpperCase();
    }


}

Uma dúvida Esse método replaceAll pode ser usado para mudar os nomes que estão na lista?

2 respostas
solução!

Oie Fabio, tudo bem contigo?

Se você fizer a partir da classe "Collections" é possível alterar uma palavra por outra, segue o exemplo:

List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
Collections.replaceAll(list, "homem", "mulher");

No código acima a palavra "homem" é trocada por "mulher", no console aparece o seguinte [mulher, mulher].

Espero ter conseguido ajudar, se tiver qualquer outra dúvida é só mandar por aqui :)

Bons estudos!

Olá Igor, tudo certo.

Então a função do * .replaceAll * é reescrever a palavra da esquerda pela a da direita.

Obrigado, pelo Feedback.