seleccionar - obtener datos de una fila seleccionada en java
¿Cómo hago 2 métodos comparables en una sola clase? (3)
Si los dos métodos requieren exactamente la misma huella, es posible que esté sobrecargando inapropiadamente una sola clase con múltiples usos, que se resolvería al corregir su jerarquía de clases, en lugar de usar "forma", subclasela con "óvalo", "rectángulo" , etc.
Si la subclasificación no tiene sentido, necesita crear diferentes clases de comparación. En Java, a menudo se utiliza un comparador para las comparaciones. Cree varios (o cree un comparador configurable): IsbnComparator, AuthorComparator, etc.
Ah, y la opción configurable sería:
BookComparator implements Compartor { enum FIELD { AUTHOR, ISBN, ... }; setSortOrder(int rank, FIELD field){...} }
Tengo una clase, que ya la ordeno por un atributo. Ahora necesito hacer otra cosa, que necesito crear otra forma de ordenar mis datos. ¿Cómo puedo hacerlo, así que puedo elegir entre los dos métodos. El único comando que conozco es Collections.sort que recogerá el método compareTo de la clase que quiero comparar sus datos.
¿Es incluso posible?
Solo puede tener un compareTo()
en su clase.
Si desea ordenar la misma clase de más de una manera, cree implementaciones de Comparator
.
Lo que necesitas hacer es implementar un Comparator
personalizado. Y luego usar:
Collections.sort(yourList, new CustomComparator<YourClass>());
Específicamente, podría escribir: (Esto creará una clase anónima que implementa Comparator
).
Collections.sort(yourList, new Comparator<YourClass>(){
public int compare(YourClass one, YourClass two) {
// compare using whichever properties of ListType you need
}
});
Usted podría construir estos en su clase si lo desea:
class YourClass {
static Comparator<YourClass> getAttribute1Comparator() {
return new Comparator<YourClass>() {
// compare using attribute 1
};
}
static Comparator<YourClass> getAttribute2Comparator() {
return new Comparator<YourClass>() {
// compare using attribute 2
};
}
}
Podría ser utilizado como tal:
Collections.sort(yourList, YourClass.getAttribute2Comparator());