-Java basado JavaSE-JDK comparador convencional

En Java problemas de programación a menudo implican una serie de objetos, a continuación, se trata de los problemas de comparación entre objetos.
objeto de Java que implementa el tipo de camino, hay dos:
el orden natural: java.lang.Comparable
costumbre clasificar: java.util.Comparator

1. Ordenar natural: java.lang.Comparable

  • interfaz Comparable impone objeto realizar un orden total de cada clase. Este orden se llama clase ordenamiento natural.
  • Implementar clase Comparable debe implementar compareTo (Object obj) método, es decir, dos objetos
    vuelven valor comparando el tamaño de compareTo método (Object obj). Si el objeto actual es mayor que este parámetro el objeto obj, devuelve un entero positivo, si el objeto actual es menor que este parámetro el objeto obj, un entero negativo se devuelve, si el objeto actual es igual a este parámetro el objeto obj, se devuelve un cero.
  • interfaz Comparable implementar una lista de objetos (y arrays) se puede realizar de forma automática o según Collections.sort Arrays.sort. Objeto implementación de esta interfaz se puede utilizar como elementos de un conjunto ordenado de clave ordenado o el mapa sin especificar el comparador.
  • Cada uno de e1 y e2 para, si y sólo si e1.compareTo (e2) == 0 tienen el mismo valor booleano que e1.equals (E2), ordenamiento natural de la clase C a la clase C se llama uniforme y iguales. Se recomienda (aunque no es necesario) para hacer el mejor ordenamiento natural es consistente con los iguales.

1.1 aplicación típica Comparable

El valor predeterminado es orden ascendente de

  • Cadena: compara de acuerdo a los valores Unicode de caracteres de una cadena
  • Carácter: de acuerdo a los valores Unicode de caracteres para comparar
  • Los valores correspondientes al tipo de envase y BigInteger, BigDecimal: de acuerdo con valores numéricos en comparación con sus correspondientes
  • Booleano: true instancia de clase envoltura es mayor que la falsa instancia correspondiente clase de contenedor correspondiente
  • fecha y hora posterior a la fecha y hora de la gran renunciar a la fecha, hora, etc .:

2. Personalizar Ordenar: java.util.Comparator

  • Cuando el tipo de elemento de la interfaz aún no se logra java.lang.Comparable conveniente modificar el código, o para lograr la colación no es interfaz adecuada java.lang.Comparable operación actual, considere Comparador utiliza para ordenar el objeto, el multi-fuerza objetos para comparar la clasificación general.
  • Reescribiendo comparar (o1 objeto, o2 Object) método, y la comparación de tamaño o2 o1: si el método devuelve un entero positivo, mayor que dicho o1 o2; si el retorno 0, lo que indica iguales; número entero de retorno negativo inferior a o2 o1.  Comparador se puede pasar a un método para ordenar (por ejemplo Collections.sort o Arrays.sort), permitiendo así un control preciso sobre el orden de clasificación.
  • Comparador también se puede usar para controlar ciertos estructuras de datos (por ejemplo, conjunto de mapas ordenado o ordenada) en este orden, o para proporcionar la colección de objetos no se ordena orden natural.
Goods[] all = new Goods[4];
all[0] = new Goods("book", 100);
all[1] = new Goods("food", 80);
all[2] = new Goods("phone", 140);
all[3] = new Goods("computer", 120);
Arrays.sort(all, new Comparator() {
	@Override
	public int compare(Object o1, Object o2) {
		Goods g1 = (Goods) o1;
		Goods g2 = (Goods) o2;
		return g1.getName().compareTo(g2.getName());
	}
});
System.out.println(Arrays.toString(all));
Publicados 337 artículos originales · ganado elogios 77 · vistas 570 000 +

Supongo que te gusta

Origin blog.csdn.net/feicongcong/article/details/104901231
Recomendado
Clasificación