A Classe Funcionario esta assim:
package br.com.funcionarios;
public class Funcionario {
    private String nome;
    private int idade;
    public Funcionario(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public int getIdade() {
        return idade;
    }
    public void setIdade(int idade) {
        this.idade = idade;
    }
}E a classe para Ordenar esta desta forma:
package br.com.funcionarios;
import java.util.Comparator;
public class OrdenaPorIdade  implements Comparator<Funcionario>{
    @Override
    public int compare(Funcionario funcionario, Funcionario outroFuncionario) {
        return funcionario.getIdade() - outroFuncionario.getIdade();
    }
}O Teste main que consome esta classe Funcionario, ficou assim:
package br.com.funcionarios;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class TesteFuncionario {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario("Barney", 31);
        Funcionario f2 = new Funcionario("Diogo", 29);
        Funcionario f3 = new Funcionario("Micaela", 31);
        Funcionario f4 = new Funcionario("Jefferson", 47);
        Set<Funcionario> funcionarios = new TreeSet<>(new OrdenaPorIdade());
        funcionarios.add(f1);
        funcionarios.add(f2);
        funcionarios.add(f3);
        funcionarios.add(f4);
        Iterator<Funcionario> iterador = funcionarios.iterator();
        while (iterador.hasNext()) {
            System.out.println(iterador.next().getNome());
        }
    }
}O erro é que a Saída esta mostrando apenas 3 nomes mas foi enviado para classe 4 nomes: Este é o resultado, Esta suprimindo o nome Micaela.
Diogo
Barney
JeffersonAlguém sabe o que pode estar acontecendo?
 
            