说明: Java中的对象,正常情况下,只能进行比较: ==或!= 。不能使用>或<的
但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。如何实现?使用两个接口中的任何一个: Comparable 或Comparator
1. 像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,
给出了比较两个对象大小的方式
2. 像String、包装类重写compareTo()方法以后,进行了从小到大的排列
3. 重写compareTo(obj)的规则:
如果当前对象this大于形参对象obj,则返回正整数,
如果当前对象this小于形参对象obj,则返回负整数,
如果当前对象this等于形参对象obj,则返回零。
代码如下:

public class StartApplication {public static void main(String[] args) {String[]str=new String[]{"CC","BB","DD","AA","GG"};Arrays.sort(str);System.out.println(Arrays.toString(str));Goods[]goods=new Goods[5];goods[0]=new Goods("huaweiMouse",64);goods[1]=new Goods("xiaomiMouse",18);goods[2]=new Goods("ipodMouse",56);goods[3]=new Goods("lenovoMouse",54);goods[4]=new Goods("reishaMouse",54);Arrays.sort(goods);System.out.println(Arrays.toString(goods));}
}
public class Goods implements Comparable{private String name;private double 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;}@Overridepublic String toString() {return "Goods{" +"name='" + name + '\'' +", price=" + price +'}';}public Goods(String name, double price) {this.name = name;this.price = price;}public Goods() {}@Overridepublic int compareTo(@NotNull Object o) {if(o instanceof Goods){Goods good= (Goods) o;
//            方式一if(this.price>good.price){return 1;}else if(this.price<good.price){return -1;}else{
//                return 0;return this.name.compareTo(good.name);}
//            方式二
//            return Double.compare(this.price,good.price);}
//        return 0;throw new RuntimeException("传入的数据不一致");}
}

结果:

[AA, BB, CC, DD, GG]
[Goods{name='xiaomiMouse', price=18.0}, Goods{name='lenovoMouse', price=54.0}, Goods{name='reishaMouse', price=54.0}, Goods{name='ipodMouse', price=56.0}, Goods{name='huaweiMouse', price=64.0}]

Comparable类相关推荐

  1. java tree类子项的添加和删除_使用Java实现二叉树的添加,删除,获取以及遍历...

    二叉树节点的声明: static final class Entry>{ //保存的数据 private T item; //左子树 private Entry left; //右子树 priv ...

  2. 集合框架-Comparator和Comparable的区别

    Comparator也叫外部比较器,常在使用Collections工具类进行集合排序的时候使用.外部比较器Comparator可以理解为一个专用的比较器,当集合中的对象不支持自比较或者比较的功能不能满 ...

  3. Java-TreeSet与Comparable的详讲与实现

    目录 初识TreeSet: 一.深入了解TreeSet的"有序" 1.1 排序的分类: 1.1.1  利用系统定义的类的存储原理如下: 1.1.2  自定义类"排序&qu ...

  4. java中Comparable的使用

    Comparable是个排序接口,若一个类实现了该接口,那么该类的数组和列表就可以通过Collections.sort或Arrays.sort进行自动排序.该接口中的只有一个compareTo(T o ...

  5. Java 类和对象——抽象类、接口、Object类

    本文章继续来介绍类和对象的知识.重点介绍抽象类和接口,Object类只做简单介绍. 现在,定义一个Shape类(形状类),当不同的对象去调用的时候,就会画出不同的图形,使用圆这个对象去调用,就会画出⚪ ...

  6. Java学习笔记(二一)——Java 泛型

    [前面的话] 最近脸好干,掉皮,需要买点化妆品了. Java泛型好好学习一下. [定义] 一.泛型的定义主要有以下两种: 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个 ...

  7. 《head first java 》读书笔记(四)

    Updated 2014/04/09 P518--P581 <数据结构> ArrayList不能排序:TreeSet以有序状态保持并可防止重复.HashMap可用成对的name/value ...

  8. 《CLR Via C# 第3版》笔记之(十五) - 接口

    接口(interface)和类(class)是CLR中应用最为广泛的两个概念.灵活的应用接口,可以构造出各种经典的设计模式. 接口的语法并不复杂,本篇主要记录接口中一些容易忽略的地方,以及如何更好的使 ...

  9. Java TreeMap 源码解析

    继上篇文章介绍完了HashMap,这篇文章开始介绍Map系列另一个比较重要的类TreeMap. 大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原 ...

最新文章

  1. Oracle Dataguard 主备库的切换方法
  2. 《星球大战:前线2》预告片发布
  3. 【转】Monkey测试6-Monkey Test Log
  4. python 处理 json 四个函数dumps、loads、dump、load的区别
  5. anaconda moviepy_Win10配置anaconda和jupyter
  6. 【数字逻辑 Verilog】全面剖析数据选择器——从基础到拓展,从理论到设计的实现,从表面到本质
  7. python生成1到100的列表_python列表生成式与列表生成器的使用
  8. php中datetime,珍藏 PHP中DateTime的常用方法
  9. 计算机网络课设之TCP通讯录
  10. DM7数据库ODBC的配置详解
  11. 联想g510升级换什么cpu好_联想G510笔记本完全拆机指南(图解)
  12. DSIS多媒体信息发布系统液晶广告机管理软件
  13. csm测试用例思维导图_架构思维导图
  14. 工控变成用c语言还是plc,浅析工控机与PLC的区别
  15. java中string是什么意思_java中string什么意思
  16. opencv图片保存0字节_openCV将8bit(1像素对应8bit)图像保存为1bit(1像素对应1bit)...
  17. 直角坐标系与极坐标系了解与转换
  18. 政务服务一网通办建设方案(ppt)
  19. 在带有触控 ID 的妙控键盘上无法正常使用触控 ID的解决方法
  20. matlab 微分符号,Matlab 符号微积分

热门文章

  1. wan口有流量但电脑上不了网_wifi可以上网但是电脑不能上网,教您wifi可以上网但是电脑不能上网...
  2. 通信计算机发展前景,计算机通信技术发展及前景分析.doc
  3. Android重力感应 .
  4. Github shields徽章配置方法介绍
  5. 【轻快图片管理系统】- 开源图床系统
  6. AIDL详解 安卓最新AIDL详解!!!!!!!!
  7. MSP430FR5969 远程升级
  8. 一键调整Word中所有图片的大小
  9. argc参数和argv参数简述
  10. 旁观之大数据 从知识产权说起