JAVA 的比较器

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}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值