Visão geral do Java Comparator

Introduzir

As necessidades reais de usar comparadores Java, operadores de comparação comuns só podem comparar tipos de dados básicos, se você quiser comparar tipos de dados de referência, não pode fazer nada.

Por exemplo, ao comprar coisas, às vezes precisamos classificar por vendas, pelo número de comentários e por preço. Cada produto aqui é um objeto. Se quisermos cumprir nossos requisitos de classificação, usaremos Java para comparar o dispositivo

1. Seleção natural

Como String, classes de wrapper implementaram a interface Comparable, reescreveram o método ComparTo e forneceram um método para comparar dois objetos

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

Para classes personalizadas, se você quiser classificar, podemos fazer a classe personalizada implementar a interface Comparable, substituir o método ComparTo, especificar como classificar no corpo do método, geralmente chamamos esse tipo de classificação 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);
        }
    }
}

Dois, classificação personalizada

Quando o tipo de elemento não implementa a interface Comparable e não é conveniente modificar o código,

Ou o agrupamento que implementa a interface Comparable não é adequado para a operação atual,

Em seguida, você pode considerar o uso de objetos do Comparator para classificar e comparar à força vários objetos na classificação geral

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);
    }
});

Acho que você gosta

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