Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvidas sobre o Lambda e Comparator.comparing.

Tenho algumas duvidas, vamos lá.

1° - Ao usar o lambda é criada a classe anonima?

2° - Quando eu utilizo o lambda para ordenação, como ensinado pelo professor, a minha IDE (intellij idea) sugere para eu alterar a utilização do lambda pelo método "comparing" da Classe Comparator, como mostrado abaixo. Gostaria de saber qual diferença desse metodo com o lambda e se ele cria classe anonima?

//Lambda
list.sort((cc1, cc2) -> Integer.compare(cc1.getAgencia(), cc2.getAgencia()));
//Alteração sugerida pela IDE.
//Comparing
list.sort(Comparator.comparingInt(Conta::getAgencia));

A IDE fez a mesma sugestão com o outro método que ordena por Strings:

//Lambda
Comparator<Conta> comp = (cc1, cc2) -> cc1.getTitular().getNome().compareTo(cc2.getTitular().getNome());
//Alteração sugerida pela IDE.
//Comparing
Comparator<Conta> comp = Comparator.comparing(cc -> cc.getTitular().getNome());

3° - Entre esses dois métodos há algum que seja mais indicado?

1 resposta
solução!
 Olá Gabriel, quando criamos uma expressão lambda é sim criada uma 
classe anônima, só que por baixo dos panos, sem precisar escreve-la.
 Já a diferença entre o lambda e o método comparing é 
que na expressão lambda nós passamos as referências(cc1, cc2)
 e dizemos para comparar de alguma forma, seja por número(getAgencia),
letra(getNome) ou qualquer outra.
 E quando usamos o comparing nós delegamos qual a classe
à qual desejamos comparar e um método da mesma para servir 
se base de comparação, assim é comparado automaticamente.
 Dessa forma você deixa o código mais legível pois invés de comparar
duas referências você só delega a forma de comparação.
 Em outras palavras, é como se você disse-se "Ordene essa lista
de acordo com o retorno no método tal.".

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software