Descripción general de Java Comparator

Introducir

Las necesidades reales de usar comparadores de Java, los operadores de comparación ordinarios solo pueden comparar tipos de datos básicos, si desea comparar tipos de datos de referencia, no pueden hacer nada.

Por ejemplo, cuando compramos cosas, a veces necesitamos ordenar por ventas, por número de reseñas y por precio. Cada producto aquí es un objeto. Si queremos cumplir con nuestros requisitos de clasificación, entonces usaremos Java para comparar Device

1. Clasificación natural

Al igual que String, las clases contenedoras han implementado la interfaz Comparable, reescriben el método ComparTo y proporcionan un método para comparar dos objetos.

重写CompareTo方法的规则:
    如果当前对象this大于形参对象obj,则返回正整数
    如果当前对象this小于形参对象obj,则返回负整数
    如果当前对象this等于形参对象obj,则返回零

Para las clases personalizadas, si desea ordenar, podemos hacer que la clase personalizada implemente la interfaz Comparable, anule el método ComparTo, especifique cómo ordenar en el cuerpo del método, generalmente llamamos a este tipo de ordenación natural

//实现Comparable接口
class Order implements Comparable<Goods>{
    
    
   //重写compareTo方法
    @override
    public int compareTo(Goods o){
    
    
        if (this.price > o.price){
    
    
            return 1;
        }else if (this.price < o.price){
    
    
            return -1;
        }else{
    
    
            return this.name.compareTo(o.name);
        }
    }
}

Dos, clasificación personalizada

Cuando el tipo de elemento no implementa la interfaz Comparable y no es conveniente modificar el código,

O la intercalación que implementa la interfaz Comparable no es adecuada para la operación actual,

Luego, puede considerar usar los objetos de Comparator para ordenar y comparar a la fuerza varios objetos en la clasificación general

Goods[] goods = new Goods[3];
goods[0] = new Goods("dhak",56);
goods[1] = new Goods("jdask",12);
goods[2] = new Goods("xa",20);
Arrays.sort(goods, new Comparator<Goods>() {
    
    
    @Override
    public int compare(Goods o1, Goods o2) {
    
    
        return o1.compareTo(o2);
    }
});

Supongo que te gusta

Origin blog.csdn.net/weixin_45321793/article/details/111041549
Recomendado
Clasificación