Ah Ilton! Apenas uma observação para não gerar confusão... da forma como coloquei acima, o que está sendo "usado" não é Compator.comparing(), mas sim, uma implementação mais enxuta de um Comparator..
// explicitamente com Comparator
palavras.sort(new Comparator<String>() {
@Override
public int compare(String palavra1, String palavra2) {
return palavra1.compareTo(palavra2);
}
});
// usando lambda
palavras.sort((palavra1, palavra2) -> palavra1.compareTo(palavra2));
// usando method reference
palavras.sort(String::compareTo);
O Comparator.comparing() recebe uma Function o que permitiria usar method references num caso como o que segue abaixo, para ordenar pelo tamanho da String.
// usando a implementação de uma Function
palavras.sort(Comparator.comparing(new Function<String, Integer>() {
@Override
public Integer apply(String palavra) {
return palavra.length();
}
}));
// usando lambda
palavras.sort(Comparator.comparing(palavra -> palavra.length()));
// usando method references
palavras.sort(Comparator.comparing(String::length));