Não consegui resolver o exercício.. Alguém pode colocar ele resolvido por favor?
Não consegui resolver o exercício.. Alguém pode colocar ele resolvido por favor?
Ola Vanessa.
A ideia é que a coleção TreeSet ela só aceita objetos que seja Comparator. Como o Recibo não é, então não é aceito no metodo add do TreeSet. Tente implementar essa interface na classe Recibo, adicionar a regra de comparação.
Você teria um trecho do código pra gente analisar?
package br.com.alura;
import java.util.Set;
import java.util.TreeSet;
public class Recibo implements Comparable<Recibo> {
public static void main(String [] args) {
Recibo rec1 = new Recibo();
Recibo rec2 = new Recibo();
Recibo rec3 = new Recibo();
Set<Recibo> recibos = new TreeSet<Recibo>();
recibos.add(rec1);
recibos.add(rec2);
recibos.add(rec3);
for (Recibo teste : recibos) {
System.out.println(teste);
}
}
@Override
public int compareTo(Recibo o) {
return 0;
}
}
O console imprime: br.com.alura.Recibo@2f0e140b
Se eu retirar a implementaçao de Compaarable e o método compareTo:
package br.com.alura;
import java.util.Set;
import java.util.TreeSet;
public class Recibo /*implements Comparable<Recibo> */{
public static void main(String [] args) {
Recibo rec1 = new Recibo();
Recibo rec2 = new Recibo();
Recibo rec3 = new Recibo();
Set<Recibo> recibos = new TreeSet<Recibo>();
recibos.add(rec1);
recibos.add(rec2);
recibos.add(rec3);
for (Recibo teste : recibos) {
System.out.println(teste);
}
}
// @Override
// public int compareTo(Recibo o) {
// return 0;
// }
}
Explode a exception:
Exception in thread "main" java.lang.ClassCastException: class br.com.alura.Recibo cannot be cast to class java.lang.Comparable (br.com.alura.Recibo is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap') at java.base/java.util.TreeMap.compare(TreeMap.java:1291) at java.base/java.util.TreeMap.put(TreeMap.java:536) at java.base/java.util.TreeSet.add(TreeSet.java:255) at br.com.alura.Recibo.main(Recibo.java:14)
Ola Vanessa, o comportamento é este mesmo, para usar TreeSet com um objeto, ele deve implementar Comparable, e caso não, ocorre este erro que você mencionou.