Comparació d'objectes

Comparables

Una classe és comparable si permet que les seves instàncies puguin ser comparades per poder ordenar-les entre sí. Totes les classes embolcall dels tipus primitius ho són (String, Integer, Double...). Les classes comparables implementen la interfície Comparable<T>.

La interfície té només un mètode:

int compareTo(T o)

El valor retornat pot ser:

  • negatiu, si aquest objecte és menor que o.
  • 0, si els dos són iguals.
  • positiu, si aquest objecte és major que o.

Les claus de la implementació TreeMap i els objectes d'un TreeSet han de ser comparables. Això permet poder navegar-los segons el seu ordre.

Comparadors

Els comparadors permeten comparar dos objectes d'un tipus T per poder ordenar-los. Són objectes que implementen la interfície Comparator<T>.

La interfície té només un mètode:

int compare(T o1, T o2)

El valor retornat pot ser:

  • negatiu, si o1 és menor que o2.
  • 0, si els dos són iguals.
  • positiu, si o1 és major que o2.

Alguns algorismes permeten utilitzar comparadors per ordenar col·leccions (veure la secció Algorismes). En general, és millor comparar fent la classe comparable, però si no podem o volem modificar el seu codi, podem crear un comparador.