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?