Durante a aula, foi dado este código:
class Avaliador {
private double maiorDeTodos = Double.NEGATIVE_INFINITY;
private double menorDeTodos = Double.POSITIVE_INFINITY;
public void avalia(Leilao leilao) {
for(Lance lance : leilao.getLances()) {
if(lance.getValor() > maiorDeTodos) maiorDeTodos = lance.getValor();
else if(lance.getValor() < menorDeTodos) menorDeTodos = lance.getValor();
}
}
public double getMaiorLance() {
return maiorDeTodos;
}
public double getMenorLance() {
return menorDeTodos;
}
}
Contudo, tentei fazer aplicando alguns conceitos aprendidos no curso de Java 8, e ficou assim:
public class Avaliador {
private double maiorDeTodos = Double.NEGATIVE_INFINITY; //menor numero que cabe em um Double
private double menorDeTodos = Double.POSITIVE_INFINITY; //maior numero que cabe em um Double
public void avalia(Leilao leilao) {
maiorDeTodos = Collections.max(leilao.getLances(), Comparator.comparing(Lance::getValor)).getValor();
menorDeTodos = Collections.min(leilao.getLances(), Comparator.comparing(Lance::getValor)).getValor();
}
public double getMaiorLance() {
return maiorDeTodos;
}
public double getMenorLance() {
return menorDeTodos;
}
}
Porém, no primeiro código mostrado pelo professor no vídeo, temos o erro quando queremos pegar o menor. Na minha versão usando o Java 8, esse erro não acontece.
Alguém sabe dizer o porquê?