Comparable接口&compareTo方法
compareTo(T t) :将调用对象与t进行比较,返回int类型的整数。
t可以是:Byte, Double, Integer, Float, Long 或 Short 类型的参数
返回值表示:
1.负整数: 调用对象的值小于t对象的值
2.零: 调用对象的值与t对象的值相等
3.整数: 调用对象的值大于t对象的值
例如:
public class Test {
public static void main(String[] args) {
Integer x =10;
Integer y =20;
System.out.println(x.compareTo(y)); //结果为-1
System.out.println(x.compareTo(x2)); //结果为 0
System.out.println(y.compareTo(x)); // 结果为 1
}
}
- 但这里有个问题,当要比较的数字是Byte, Double, Integer, Float, Long 或 Short 类型之外的数据类型:如int,或者char类型的数据就无法直接使用compareTo方法
int x = 10;
int y = 20;
int en = x.compareTo(y) //这是不允许的
方法1:实现Comparable接口重写compareTo方法
//创建一个汽车类 实现了Comparable接口 接口泛型传递Car
public class Car implements Comparable<Car> {
public int money ;
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
@Override
public int compareTo(Car o) {
return this.getMoney()-o.getMoney();
}
}
//测试方法
public class Test {
public static void main(String[] args) {
//创建汽车对象
Car car1 = new Car();
Car car2 = new Car();
//为每一辆车标金额
car1.setMoney(100);
car2.setMoney(200);
//调用重写的compareTo方法进行比较
int i = car1.compareTo(car2);
int j = car2.compareTo(car1);
int z = car1.compareTo(car1);
System.out.println(i); //结果是-100
System.out.println(j); //结果是 100
System.out.println(z); //结果是 0
}
}
方法2:将int类型的数据进行封装
//不推荐 Integer integer = new Integer(i);自jdk1.9后已经舍弃该使用方法
//推荐 Integer iy = Integer.valueOf(y);
public class Test {
public static void main(String[] args) {
int x = 10;
int y = 20;
Integer ix = Integer.valueOf(x);
Integer iy = Integer.valueOf(y);
System.out.println(ix.compareTo(iy)); //结果为 -1
System.out.println(iy.compareTo(ix)); //结果为 1
System.out.println(ix.compareTo(ix)); //结果为 0
}
}