Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Comparable - usando TreeMap

Caros Amigos, bom Dia

Me tirem esta duvida, porque quando quero inserir objetos em um TreeMap sou obrigado na classe que será inserida a implementar o comparable, e como crio o compareTo usando 3 atributos sendo um String e dois integer ???

Grato

1 resposta
solução!

Por definição, um TreeMap é um mapa ordenado (classificado por chaves). As chaves do mapa precisam ser comparáveis para garantir uma ordem de classificação no mapa. Portanto, elas devem implementar Comparable.

public class MinhaClasse  implements Comparable<MeuObjeto> {

  public int compareTo(MeuObjeto meuObjeto){
    String atributoString = meuObjeto.getAtributoString();
    Integer atributoInteger1 = meuObjeto.getAtributoInteger1();
    Integer atributoInteger2 = meuObjeto.getAtributoInteger2();

    if(this.atributoInteger1 < atributoInteger1) {
            return -1;
    } else {
            return 1;
    }

    return 0;
  }

}

No método compareTo você deve retornar um número inteiro:

  • menor que 0 -> indica que o objeto atual (this) está antes do objeto passado como parâmetro.
  • mais de 0 -> o objeto atual vem depois do objeto passado
  • igual a 0 -> os dois objetos estão no mesmo nível (this e parâmetro)