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接口

Comparable和Comparator接口的差异

对象间的比较和排序——Comparable和Comparator的使用

Java中的Comparable接口和Comparator接口

Comparator接口Comparable接口 排序接口的使用方式