xception in thread "main" java.lang.ClassCastException: cap07.Teste
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at cap07.TestSet.main(TestSet.java:27)
public class TestSet {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Teste teste = new Teste();
Collection treeset = new TreeSet();
teste.codigo =10;
teste.nome ="Paulo";
treeset.add(teste);
//
Teste teste1 = new Teste();
teste1.codigo =05;
teste1.nome ="Cris";
//
treeset.add(teste1);
Iterator<Teste> i3 = treeset.iterator(); // make an iterator
while (i3.hasNext()) {
Teste d2 = i3.next(); // cast not required
System.out.println(d2.codigo);
System.out.println(d2.nome);
System.out.println("---------------------------");
}
}
}
class Teste{
public String nome;
public int codigo;
}
e ae brother muita bronca nesses testes ?
olha só, o TreeSet com vc sabe é uma classe que não permite duplicatas e que tb é classificada, opa olha a bronca ai… Quando vc quizer usar um conjunto que é classificado os elementos que vc inseri dentro do conjunto precisa ser mutuamente comparavéis, coisa que sua classe Teste não é… Objetos de tipos diferentes não são mutuamente compáraveis… Então como podemos fazer para utiliza-lo dentro de um TreeSet ? Simples, só é necessário implementar a interface Comparable e “sobrepor” seu método compareTo().
Resumindo tudo, o que vc desejar inserir em um TreeSet precisa implementar a a interface Comparable.
Pegue esse exemplo que fiz e coloque na sua classe Teste.
class Teste implements Comparable< Teste >{
public String nome;
public int codigo;
public int compareTo( Teste teste ){
return nome.compareTo( teste.nome );
}
}
se vc não estiver usando java 5
faz assim:
class Teste implements Comparable{
public String nome;
public int codigo;
public int compareTo( Object o ){
Teste t = ( Teste ) o;
return nome.compareTo( t.nome );
}
}
Abraços,
Qualquer coisa posta ai…
Rulio Vangellis.