JavaPOOintermediario

Comparable

Quando você tem uma lista de objetos, como produtos, muitas vezes precisa ordená-los — por preço, nome ou data. Em vez de escrever um algoritmo de ordenação manual, Java oferece a interface Comparable, que define a ordem natural dos objetos. Bancos de dados e listas em interfaces gráficas dependem disso para exibir itens organizados. Dominar Comparable permite que você use Collections.sort() sem esforço extra.

O PROBLEMA

Implemente Comparable<Produto> para ordenar por preço.

EXEMPLO

produtos ordenados por preço

SOBRE O CONCEITO

A interface Comparable<T> exige que sua classe implemente o método compareTo(T outro). Esse método deve retornar um número negativo se o objeto atual for menor (vem antes), zero se for igual, e positivo se for maior (vem depois). O erro mais comum é inverter a lógica, por exemplo retornar this.preco - outro.preco quando a ordem desejada é crescente — isso está correto, mas se o retorno for outro.preco - this.preco, a ordem fica decrescente. Outro erro é não implementar a interface corretamente, usando Comparable sem o tipo genérico. Ao fazer implements Comparable<Produto>, você garante que compareTo recebe um Produto, não um Object. Com isso, Collections.sort(lista) ordena automaticamente pelo critério definido.

RESOLUÇÃO

Mais exercícios de POO

JAP004 · BásicoMétodo com retornoJAP005 · BásicoMúltiplos objetosJAP011 · IntermediárioHerança simplesJAP002 · BásicoConstrutor
Ver todos os exercícios de Java