Estas interfaces están orientadas a mantener ordenadas las listas, y también los sets y maps que
deben mantener un orden. Para ello se dispone de las interfaces java.lang. Comparable y
java.útil. Comparator (obsérvese que pertenecen a packages diferentes).
La interface Comparable declara el método compareTof) de la siguiente forma:
public int compareTo(Object obj)
que compara su argumento implícito con el que se le pasa por ventana. Este método devuelve mi
entero negativo, cero o positivo según el argumento implícito (this) sea anterior, igual o posterior
al objeto obj. Las listas de objetos de clases que implementan esta interface tienen un orden
natural. En Java 1.2 esta interface está implementada -entre otras- por las clases String. Character.
Date. File. BigDecimal. Biglnteger. Byte. Short. Integer. Long. Float y Double.
Téngase en
cuenta que la implementación estándar de estas clases no asegura un orden alfabético correcto con
mayúsculas y minúsculas, y tampoco en idiomas distintos del inglés.
Si se redefine. el método compareTo() debe ser programado con cuidado: es muy conveniente
que sea coherente con el método equalsf) y que cumpla la propiedad transitiva. Para más
información, consultar la documentación del JDK 1.2.
Las listas y los arrays cuyos elementos implementan Comparable pueden ser ordenadas con
los métodos static Collections.sortf) y Arrays.sort().
La interface Comparator permite ordenar listas y colecciones cuyos objetos pertenecen a
clases de tipo cualquiera. Esta interface permitiría por ejemplo ordenar figuras geométricas planas
por el área o el perímetro. Su papel es similar al de la interface Comparable, pero el usuario debe
siempre proporcionar una implementación de esta clase. Sus dos métodos se declaran en la forma:
public int compare(Object ol, Object o2)
public boolean
equals(Object obj)
El objetivo del método equalsQ es comparar Comparators.
El método compare() devuelve un entero negativo, cero o positivo según su primer argumento
sea anterior, igual o posterior al segundo. Los objetos que implementan Comparator pueden
pasarse como argumentos al método Collections.sort() o a algunos constructores de las clases
TreeSet y TreeMap. con la idea de que las mantengan ordenadas de acuerdo con dicho Comparator.
Es muy importante que comparef) sea compatible con el método equalsf) de los objetos que hay
que mantener ordenados. Su implementación debe cumplir unas condiciones similares a las de
compareTo().
Java 1.2 dispone de clases capaces de ordenar cadenas de texto en diferentes lenguajes. Para
ello se puede consultar la documentación sobre las clases CollationKey. Collator y sus clases
derivadas, en el package ja va. text.
No hay comentarios:
Publicar un comentario