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