1、知识点
- JAVA 中的对象,正常情况下,只能比较:== 或 !=。 不能使用> <
- 开发时需要对对象进行排序、即需要比较对象大小
- 实现方式:Comparable 或者 Comparator
查看源码:
分析:String的包装类实现了Comparable 重写了sort 方法
2、自己写一个实现Comparable 的类
package com.compter;
public class LearnCompter implements Comparable {
private String name;
private double price;
// 空参构造器
public LearnCompter() {
}
// 带参构造器
public LearnCompter(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "LearnCompter{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
// 自写排序逻辑
// 按价格高到低
@Override
public int compareTo(Object o) {
if (o instanceof LearnCompter) {
LearnCompter mygoood = (LearnCompter) o;
if (this.price > mygoood.price) {
return 1;
}
else if(this.price < mygoood.price){
return -1;
}else{
return this.name.compareTo(mygoood.name);
}
}
throw new RuntimeException("传入数据类型不一致");
}
}
测试
package com.test;
import com.compter.LearnCompter;
import org.junit.Test;
import java.util.Arrays;
public class TestCompter {
@Test
public void test(){
LearnCompter[] arr1 = new LearnCompter[4];
arr1[0] = new LearnCompter("first", 25);
arr1[1] = new LearnCompter("second", 14);
arr1[2] = new LearnCompter("third", 17);
arr1[3] = new LearnCompter("four", 19);
//
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));
//System.out.println(arr1);
}
}
结果:
[LearnCompter{name='second', price=14.0}, LearnCompter{name='third', price=17.0}, LearnCompter{name='four', price=19.0}, LearnCompter{name='first', price=25.0}]