Comparable接口的简单使用
Posted 364.99°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Comparable接口的简单使用相关的知识,希望对你有一定的参考价值。
Comparable接口: 定义排序规则。
定义一个类的比较规则 —— compareTo
- 实现 Comparable 接口
- 重写
compareTo
方法
使用比较规则自定义方法来进行比较:
- 根据
compareTo
返回值来比较类的实例的大小
package compare.comparable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.swing.*;
import java.math.BigDecimal;
/**
* @Author: chenJY
* @Description:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Cat implements Comparable<Cat>
private String name;
private BigDecimal price;
private Integer age;
/**
* @Description 重写compareTo,定义比较规则
* 如果价格不同就比较价格,否则就比较年龄
* @param o
* @return int
*/
@Override
public int compareTo(Cat o)
if (this.price != o.price)
return this.price.compareTo(o.price);
else
return o.age - this.age;
/**
* @Description 获取价值更大的猫
* @param c1
* @param c2
* @return Comparable
*/
public static Comparable getMax(Comparable c1, Comparable c2)
int cmp = c1.compareTo(c2);
if (cmp > 0)
return c1;
else
return c2;
public static void main(String[] args)
Cat cat1 = new Cat();
cat1.name = "张三";
cat1.price = new BigDecimal(28.9);
cat1.age = 3;
Cat cat2 = new Cat("李四", new BigDecimal(28.9), 2);
Cat cat3 = new Cat("王五", new BigDecimal(33), 2);
getMax(cat1, cat2);
System.out.println("张三和李四中价值更大的猫是:" + getMax(cat1, cat2));
System.out.println("王五和李四中价值更大的猫是:" + getMax(cat3, cat2));
以上是关于Comparable接口的简单使用的主要内容,如果未能解决你的问题,请参考以下文章
Comparable接口与Comparator接口的比较————Comparable接口详解
对象间的比较和排序——Comparable和Comparator的使用