Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Exemplo de implementação

Quero uma sugestão de melhoria de implementação da minha classe OrdernaPorIdade, segue abaixo o código:

import java.util.Comparator;

public class OrdenaPorIdade implements Comparator{

@Override
public int compare(Funcionario func1, Funcionario func2) {
    if(func1.getIdade() < func2.getIdade()) {
        return -1;
    } else if(func1.getIdade() > func2.getIdade()) {
        return 1;
    } else {
        return 0;            
    }
}

}

2 respostas
solução!

Olá Edson, tudo bem com você?

Acredito que a outra forma de se fazer isso seja a que foi apresentada pelo instrutor:

@Override
public int compare(Funcionario funcionario, Funcionario outroFuncionario) {
    return funcionario.getIdade() - outroFuncionario.getIdade();
}

Mas como você já deve ter visto nos cursos de Collections e Java 8, geralmente usamos expressões lambdas para definir um comparator:

funcionarios.sort(Comparator.comparing(Funcionario::getIdade));
funcionarios.forEach(System.out::println);

A única motivação para usarmos esse tipo mais trabalhoso de implementação do método compare() é em casos onde o critério de ordenação foge muito do padrão e precisamos personalizar muito cada critério.

Peço desculpas pela demora no retorno, se algum ponto não ficou legal, estou à disposição!

Bom dia Tiago. Ficou muito claro a sua explicação, vou atualizar meu método utilizando o recursos das Lambdas com o método compare() como você demonstrou. Obrigado.