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

Como a ordem é estabelecida?

Collections.max(itens, Comparator.comparing(item -> item.getQuantidadeInteira())); Dessa linha, entendo que o método comparing tem com o parâmetro a lambda function (que tem item como parametro) que aplica o método getQuantidadeInteira a cada item passado. Este método retorna Integer.parseInt(). Mas quem é o Integer??? Como ele sabe, de todos os atributos do objeto, qual eu quero fazer um parseInt? Alguém me ajuda, valeu!

1 resposta
solução!

O Comparator recebe a interface funcional Function como parâmetro, que está sendo implementado através desse lambda item -> item.getQuantidadeInteira(). Para facilitar, você pode desmembrar assim:

Function<Item, Integer> funcao = item -> item.getQuantidadeInteira();
// Item::getQuantidadeInteira também funciona, nesse caso é um reference method
Comparator<Item> comparator = Comparator.comparing(funcao);

Collections.max(itens, comparator);

O integer vem do campo que vc está usando na comparação, nesse caso: quantidadeInteira.

Espero ter te ajudado