Boa tarde!
Fiz um teste inicializando um Comparator no main por meio de um lambda, conforme código abaixo:
package br.com.alura.teste;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import br.com.alura.modelo.Funcionario;
public class Teste {
public static void main(String[] args) {
Funcionario f1 = new Funcionario("Barney", 12);
Funcionario f2 = new Funcionario("Jonatan", 9);
Funcionario f3 = new Funcionario("Guaraciara", 13);
Set<Funcionario> funcionarios = new TreeSet<>((Funcionario func1, Funcionario func2) -> Integer.compare(func1.getIdade(), func2.getIdade()));
funcionarios.addAll(Arrays.asList(f1, f2, f3));
Iterator<Funcionario> iterador = funcionarios.iterator();
while (iterador.hasNext()) {
System.out.println(iterador.next().getNome());
}
}
}
O código compila e executa normalmente, mas gostaria de saber se há alguma má prática na implementação que eu fiz.
Além disso, caso não quisesse usar um Comparator, haveria algum problema em implementar a interface Comparable em Funcionario e criar uma ordem natural baseada nas idades?
Obrigado!