Opa! Bom dia, Lucas. Tudo certo?
O problema em questão está acontecendo pois o seu TreeSet
não está recebendo por parâmetro uma classe Comparator
.
Como no exemplo mostrado pelo professor, a instância de seu Set
de Funcionarios deveria ser assim:
// ... código omitido
Set<Funcionario> funcionarios = new TreeSet<>(new OrdenaPorIdade());
// ... código omitido
... ao contrário de:
// ... código omitido
Set<Funcionario> funcionarios = new TreeSet<>();
// ... código omitido
Se você fizer esta pequena alteração, seu código já deve funcionar. O motivo do seu erro é porque o TreeSet
é uma implementação de Set
, que ordena automaticamente os valores nele adicionados. Entretanto, para o TreeSet
fazer a ordenação, ele precisa compreender como que essa ordenação deve ser feita, e é aí que entra o seu Comparator
.
DOCUMENTAÇÃO DO JAVA:
Constrói um novo conjunto de árvore vazio, classificado de acordo com o comparador especificado. Todos os elementos inseridos no conjunto devem ser mutuamente comparáveis pelo comparador especificado: comparator.compare(e1, e2) não deve lançar uma ClassCastException para nenhum elemento e1 e e2 no conjunto. Se o usuário tentar adicionar um elemento ao conjunto que viole essa restrição, a chamada add
lançará uma ClassCastException.