首页 > 其他分享 >比较器Comparable、Comparator

比较器Comparable、Comparator

时间:2022-08-18 23:11:22浏览次数:76  
标签:Comparable Goods name Comparator price arr public 比较 String

Comparable接口的使用(自然排序)

1.String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式. String、包装类重写了compareTo()方法以后,进行了从小到大的排序。

2.重写compareTo(obj)规则:

  如果当前对象this大于形参对象obj,则返回正整数。

  如果当前对象this小于形参对象obj,则返回负整数。

  如果当前对象this等于形参对象obj,则返回0

3.对于自定义类,如果需要排序,让自定义类实现Comparable接口,重写compareTo(obj)方法,在compareTo(obj)方法中指明如何排序。

public class Goods implements Comparable<Goods>{
    private String name;
    private double price;

    public Goods(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 "Goods{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }

    //按照价格从低到高排序,再按照产品名称从高到底排序
    @Override
    public int compareTo(Goods o) {
        //方式一
        if(this.price>o.price){
            return 1;
        }else if(this.price<o.price){
            return -1;
        }else {
            //return 0;
      return -this.name.compareTo(o.name); } //方式二 //return Double.compare(this.price,o.price); } }

  

    @Test
    public void test1(){
        Goods[] arr = new Goods[4];
        arr[0] = new Goods("bbb",35);
        arr[1]= new Goods("eee",15);
        arr[2]= new Goods("ddd",55);
        arr[3]= new Goods("aaa",25);

        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        //[Goods{name='eee', price=15.0}, Goods{name='aaa', price=25.0}, Goods{name='bbb', price=35.0}, Goods{name='ddd', price=55.0}]
    }

  

 

标签:Comparable,Goods,name,Comparator,price,arr,public,比较,String
From: https://www.cnblogs.com/ixtao/p/16600487.html

相关文章

  • KingbaseES时间函数的比较
    KingbaseES提供了多种的时间函数,这些函数在使用过程中存在哪些不同?**同一事务**test=#begintest-#foriin1..10looptest-#raisenotice'time1:%,time2:%,tim......
  • Java的Comparator升序降序的记法
    在使用Java自带的排序函数时,往往需要根据自己的需求自定义比较器。以前一直对Comparator的升序降序疑惑。现在记录一下,加深下印象。先给结论:实现Comparator接口,必须实现下......
  • Park变换比较(自建与simulink中自带)
    模型建立   参数选择及输出波形    ——————————————————————————————————————————————————————......
  • 1. 对常用I/O模型进行比较说明
      一、服务端I/O流程I/O在计算机中指Input/Output,IOPS(Input/OutputPerSecond)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时......
  • rust f64 比较
      (val1-val2).abs()<f64::EPSILON  val1.to_ne_bytes()==val2.to_ne_bytes()或者 val1.to_bits()==val2.to_bits()......
  • AcWing周赛62-64 中比较有意思的小题题解
    AcWing周赛62-64(选讲)感觉比较思维4502.集合操作https://www.acwing.com/problem/content/4505/根据题意,肯定要使得所取的最大值最大,平均值最小。又因为每次放进来的的......