(Comparador) Comparador

Comparador

Comparator pertenece a un soporte de comparador rescatado, y su propósito principal es resolver la operación de clasificación de algunos objetos de la clase que no utilizan la clasificación Comparable.

Ejemplo: Se ha desarrollado el proyecto del programa y no se ha considerado la función de comparador debido al diseño anterior

class Person{
	private String name;
	private int age;
	
	public Person(String name,int age) {
		
		this.name = name;
		this.age = age;
		
	}
	
	//setter、getter略
	public String toString() {
		
		return "【Person类对象】姓名:"+this.name +"、年龄:"+this.age+"\n";
		 
	}
}

Más tarde, después de varias versiones de actualizaciones iterativas, se encontró que la clase Person necesita ser ordenada, pero la clase Person no se puede modificar (la interfaz Comparable no se puede implementar), por lo que esta es una forma de rescate para lograr la comparación, en el Clase de matrices Hay otra implementación de ordenación:

  • Procesamiento de clasificación basado en Comparador: clasificación estática pública <T> (T [] a, Comparador <? Super T> c)

En java.util.Compatator, un método de clasificación compare () (public int compare (T o1, T o2)) se definió originalmente en java.util.Compatator, pero luego aparecieron muchos métodos estáticos en desarrollo continuo.

Ejemplo: realizar el procesamiento de clasificación basado en Comparator

 

class Person{
	private String name;
	private int age;
	
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public String getName() {
		return this.name;
	}
	public int getAge() {	
		return this.age;
	}
	
	public String toString() {
		return "【Person类对象】姓名:"+this.name +"、年龄:"+this.age+"\n";
	} 
}

class PersonComparator implements Comparator<Person>{

	@Override
	public int compare(Person o1, Person o2) {
		return o1.getAge() - o2.getAge();	//当前数据与小于传入的对象返回负数,大于返回整数,等于返回0
	}
	  
}

Las reglas se pueden utilizar para implementar operaciones cuando se ordena la clase de prueba.

public static void main(String[] args) {
		Person[] data = new Person[] {
				new Person("王五",19),
				new Person("张三",80),
				new Person("李四",41),
				new Person("周一",50)
			};
		Arrays.sort(data,new PersonComparator());	//进行对象数组的排序
		System.out.println(Arrays.toString(data));	//输出
	}

[[Persona objeto] nombre: Wang Wu, edad: 19
, [Persona objeto] nombre: Li Si, edad: 41
, [Persona objeto] nombre: Lunes, edad: 50
, [Persona objeto] nombre: Zhang 3. Edad: 80
]

No se recomienda utilizar esta operación de clasificación si no es necesario.

Pregunta de la entrevista: Explique la diferencia entre Comparable y Comparator.

  • java.lang.Comparable es la interfaz principal implementada cuando se define la clase. Se utiliza principalmente para definir las reglas de clasificación. Solo hay un método compareTo ().
  • java.ytil.Comparator es la operación de comparación rescatada. Es necesario establecer una regla de comparación separada para lograr la clasificación, y hay un método compare ().
  •  

Supongo que te gusta

Origin blog.csdn.net/weixin_46245201/article/details/112628474
Recomendado
Clasificación