Aparece uma mensagem de erro pois a classe precisa implementar a interface Comparator na Classe Recibo pois o TreeSet guarda os dados de maneira natural por isso necessita da interface Comparator.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Aparece uma mensagem de erro pois a classe precisa implementar a interface Comparator na Classe Recibo pois o TreeSet guarda os dados de maneira natural por isso necessita da interface Comparator.
Olá Cleiton!
O TreeSet guarda os elementos em sua ordem natural seguindo a estrutura de uma árvore, por isso é obrigatório existir uma forma de comparar os elementos. Você pode implementar a interface Comparable no tipo de elemento que está usando no TreeSet<Tipo> ou usar o contrutor que recebe um Comparator<Tipo>.
Por exemplo:
Tipo que implementa a interface Comparable
public class Tipo implements Comparable<Tipo> {
private final Integer id;
public Tipo(int id) {
this.id = id;
}
@Override
public int compareTo(Tipo o) {
return id.compareTo(o.id);
}
}Tipo que não implementa Comparable
class TipoSemComparable {
private final Integer id;
TipoSemComparable(int id) {
this.id = id;
}
public Integer getId() {
return id;
}
}
class Main {
public static void main(String[] args) {
Tipo tipoComComparable = new Tipo(1);
TipoSemComparable tipoSemComparable = new TipoSemComparable(2);
TreeSet<Tipo> arvoreDeTipoComComparable = new TreeSet<>();
arvoreDeTipoComComparable.add(tipoComComparable);
arvoreDeTipoComComparable.forEach(System.out::println);
TreeSet<TipoSemComparable> arvoreDeTipoSemComparable = new TreeSet<>(
Comparator.comparing(TipoSemComparable::getId));
arvoreDeTipoSemComparable.add(tipoSemComparable);
arvoreDeTipoSemComparable.forEach(System.out::println);
TreeSet<TipoSemComparable> vaiDarErro = new TreeSet<>();
vaiDarErro.add(tipoSemComparable); // nessa linha vai haver um ClassCastException, pois não é Comparável (implementa Comparable)
}
}