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
Jefferson
Alguém sabe o que pode estar acontecendo?