Objetos adicionados a uma TreeSet podem não implementar a interface Comparable desde que seja passado um Comparator para a mesma em sua criação.

Podemos observar que a classe Pessoa não implementa a interface Comparable e mesmo assim seus objetos instanciados puderam ser adicionados em uma TreeSet.

 
 

SEGUE O CÓDIGO:

 
 

import java.util.TreeSet;

import java.util.Comparator;

 
 

public class Teste {

public static void main(String[] args){

TreeSet<Pessoa> set1 = new TreeSet<Pessoa>(new PorIdade());

set1.add(new Pessoa(“pedro”, 34));

set1.add(new Pessoa(“lorena”, 2));

set1.add(new Pessoa(“kike”,5));

set1.add(new Pessoa(“juliane”,32));

System.out.println(“ordem de idade -” + set1);

 
 

// Como não podemos mudar o algorítmo de classificação dos

// elementos de uma TreeSet atribuindo-a um novo objeto que

// implemente a interface Comparator, então temos que criar uma

// nova instância de TreeSet e na criação passar o novo algoritmo

// de classificação dos elementos, neste caso representado pela classe “PorNome”.

TreeSet<Pessoa> set2 = new TreeSet<Pessoa>(new PorNome());

set2.addAll(set1);

System.out.println(“ordem de nome – ” + set2);        

}

}

Output:

ordem de idade -[lorena – 2, kike – 5, juliane – 32, pedro – 34]

ordem de nome – [juliane – 32, kike – 5, lorena – 2, pedro – 34]

 
 

// Repare que a classe pessoa não implementa a interface Comparable.

class Pessoa {

public String nome;

public Integer idade;

public Pessoa(String nome, Integer idade){

this.nome = nome;

this.idade = idade;

}

public String toString(){

return String.format(“%1$s – %2$d”,this.nome, this.idade);

}

}

 
 

class PorIdade implements Comparator<Pessoa> {

public int compare(Pessoa p1, Pessoa p2){

return p1.idade.compareTo(p2.idade);

}

}

 
 

class PorNome implements Comparator<Pessoa> {

public int compare(Pessoa p1, Pessoa p2){

return p1.nome.compareTo(p2.nome);

}

}

Esta entrada foi publicada em Arrays & Colletions com as etiquetas , . ligação permanente.

2 respostas a Objetos adicionados a uma TreeSet podem não implementar a interface Comparable desde que seja passado um Comparator para a mesma em sua criação.

  1. Saulo Aislan diz:

    Vlw Cara !!

    Gostar

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s