Java中的Compare和Comparator的使用方法

发布时间:2020-05-23 09:24:06

来源:亿速云

阅读:358

作者:Leah

如何使用Java中的Compare和Comparator?相信很多新手小白对Compare和Comparator的了解处于懵懂状态,通过这篇文章的总结,希望你能有所收获。如下资料是关于Compare和Comparator使用方法的代码。class Apple implements Comparable{

int id;

double price;public Apple(int id, double price) {

this.id = id;

this.price = price;

}

public int compareTo(Apple o) {

//return Double.compare(this.getPrice(),o.getPrice());

if (Math.abs(this.price-o.price)<0.001)

return 0;

else

return (o.price-this.price)>0?1:-1;

}

@Override

public String toString() {

return "Apple{" +

"id=" + id +

", price=" + price +

'}';

}

}```

class AESComparator implements Comparator{public int compare(Apple o1, Apple o2) {

if (Math.abs(o1.price-o2.price)<0.001)

return 0;

else{

return (o1.price-o2.price)>0?1:-1;

}

}

}

实现了Comparable接口的类需要实现compareTo()方法,传入一个外部参数进行比对,实现了Comparator接口的方法需要实现compare()方法,对外部传入的两个类进行比较,从而让外部方法在比较时调用。

两者的区别是实现Comparator接口代码更加灵活,可以定义某个类的多个比较器,从而在排序时根据实际场景自由调用,而Comparable接口实现后便不能改动。

总结:

comparator接口:真正要实现的只有compare()方法,需要单独准备出一个类来实现comparator接口,这个类将作为指定类的排序类

public int compare(Emp o1,Emp,o2){

return o1.id - o2.id

}

这是说如果o1的id - o2的id是正数就升序,如果负数降序。如果0就剔除

>0  升序

<0降序

=0 重复,不记录

comparable接口实现该类接口不需要重新创建一个排序的类,使用接口compareble接口排序,只要重写里面的compareTo()方法

Collections类是一个包装类,它包含有各种有关集合操作的静态方法。就像一个工具类。

Collections.sort()

sort()排序方法,根据元素的自然排序对指定列表按升序进行排序

public static void sort(List list,Comparator<>),根据指定比较器产生的顺序对指定列表进行排序,此列表内的所有元素都必须可使用指定的比较器相互比较

参数:list——要排序的列表

C——确定列表顺序的比较器

猜你还想看:

关于Java中的Compare和Comparator的使用方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。

compare用法java_Java中的Compare和Comparator的使用方法相关推荐

  1. python中zeros用法_python中numpy.zeros(np.zeros)的使用方法

    python 的 python中numpy.zeros(np.zeros)的使用方法 翻译: 用法:zeros(shape, dtype=float, order='C') 返回:返回来一个给定形状和 ...

  2. linux中read函数的用法,Linux中read命令的简介及使用方法

    Linux中read命令的简介及使用方法 发布时间:2020-08-17 16:40:04 来源:亿速云 阅读:107 作者:小新 这篇文章给大家分享的是有关Linux中read命令的简介及使用方法的 ...

  3. while的用法java_java中的while循环和do while循环

    那么在讲解循环之前呢我们先来了解一下什么是循环   生活中的例子 车子的轮胎他就是一直在循环 马拉松跑到也是在循环 因为运动员不停的一圈一圈在跑这也是一个循环 那么我们为什么要学习循环呢? 下面看一个 ...

  4. drawimage的用法 java_java中方法drawImage()的参数详细解释

    public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver obse ...

  5. constrain用法java_Java中的@UniqueConstraint注释

    问题 我有一个Java bean.现在,我想确保该字段应该是唯一的.我使用以下代码: @UniqueConstraint(columnNames={"username"}) pub ...

  6. java properties用法_java中Properties文件加载和使用方法

    一.Properties简介 Properties 类继承自HashTable,提供的方法很像Map的实现类HashMap.它在 Java 编程的早期就有了,并且几乎没有什么变化.J2SE 的 Tig ...

  7. c语言endswith用法,js中的indexOf以及startsWith和endsWith方法

    js有indexOf方法,却没有像java同样的startsWith 或者 endsWith 这样的方法.javascript 在js里,统统能够用 indexOf()!=-1 来代替.indexOf ...

  8. java中compare语句的用法,compare的用法_java中 compareTo()的程序代码及用法

    compare的用法与区别? 一.用法 v. (动词) 1.compare的基本意思是"比较,对照",主要用于比较事物的典型特征及其价值,而不在于比较相同与不同. 2.compar ...

  9. java中compare语句的用法_Java RuleBasedCollator compare()用法及代码示例

    java.text.RuleBasedCollat​​or类的compare()方法用于比较两个对象的强度,并且根据结果将返回0,正值和负值作为输出. 用法: public int compare(O ...

最新文章

  1. 操作系统期末复习重点题型归纳
  2. hasattr判断是不是可迭代类型的方法
  3. iOS设计模式 ——单例模式详解以及严格单例模式注意点
  4. fir fpga 不同截止频率_一种新的FIR滤波器系数量化方法
  5. php at,PHP的at符号
  6. int fun(int n){switch(n){case 0: return 0;case 1: return 1;case 2: return 1;default:return fun(n-)}}
  7. ASIC与FPGA的最大区别是什么 可否相互替代
  8. 桌面图标无故变成白色
  9. cacti监控部署——网络流量监控
  10. 《大数据时代》读后感,维克托
  11. 论文投稿指南——中国(中文EI)期刊推荐(第4期)
  12. 昆石VOS2009/VOS3000 2.1.6.00 操作指南
  13. pes2017服务器维护时间,PES2017授权详情与球场数据包发布时间
  14. 关于 Kubernetes中deployment的一些笔记
  15. 诺基亚升级Android10,诺基亚发布第五次Android 10更新 ,诺基亚7+可升级
  16. 遥感卫星影像数据全色波段和多光谱波段
  17. 2022-06 CCF
  18. c++:vector sort()排序
  19. ApiOne URL 调用说明
  20. 【C++】Windows控制台API基本使用(上)

热门文章

  1. 使用C#.NET通过MAPI访问收件箱
  2. 2021年中国按钮开关市场趋势报告、技术动态创新及2027年市场预测
  3. c语言循环结构程序设计教学,高级C语言循环结构程序设计教学教材演示幻灯片.ppt...
  4. Mysql数据库读书笔记
  5. Android 扫码登录案例
  6. 范式-范式:范式 百科
  7. 6个linux运维典型问题,Linux运维人员面试常见的问题及答案(二)
  8. 杰理之ANC电路设计注意事项【篇】
  9. gitbook搭建在线书籍
  10. 4.0 第三十三章 XML