Comparator--比较器

  • 前言
  • 一、Comparator概念
  • 二、使用方法
  • 总结

前言

今天在看系统自代堆的定义的时候发现了一个好东西,值得分享,那就是比较器


一、Comparator概念

  • 定义:

Comparator是外部比较器,用于比较来对象与对象之间的,两个对象进行比较,多用于集合排序,而Comparable可以认为是一个内比较器,根据对象某一属性进行排序的。

  • 我的理解

需要将一个混乱的数组或者集合通过一定的规律输出时(升序或者降序)可以使用这个外部的比较器,他可以将一个定义的几个通过内部排序变换为新的数组或集合。

二、使用方法

  • 这里我先定义一个静态内部类,里面包含了用于比较的属性参数num
 static class KoP{int num;public KoP(int num){this.num=num;}}
  • 接着我再定义一个这个类的集合,通过循环升序的将数字存储进去
 public static void hu(){List<KoP> list = new ArrayList<>();for (int i = 0; i <10; i++) {list.add(new KoP(i));}Collections.sort(list, new Comparator<KoP>() {@Overridepublic int compare(KoP o1, KoP o2) {return o2.num-o1.num;}});for (KoP koP : list) {System.out.println(koP.num);}}
  • 得到结果
9
8
7
6
5
4
3
2
1
0
  • 这个地方就实现了降序排列,同时也可以知道
 public int compare(KoP o1, KoP o2) {return o2.num-o1.num;}

在上面的代码中的定义,o2-o1是降序,o1-o2是升序这里可以理解为o2为大在前,比它小的在后。


总结

这个外部的比较器不错经常会用到,还有一个Comparable接口的内部比较器,但是我只是在大数据处理的mr程序中使用过这个内部比较器,其它时候没有用过,但是这个Comparator对于实际操作中比较有用,还有在定义一个大顶堆或者小顶堆时皆可。
下面是一个大顶堆的定义。

PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});

Comparator--比较器相关推荐

  1. Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

    1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...

  2. java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...

    在涉及到数组, 集合等这些地方经常会需要用到排序算法, 在Java中的Collections类中有sort方法, 除了需要传入一个Comparator比较器, 或者需要排序的类实现了Comparabl ...

  3. 进阶08 Collections实现类、Comparator比较器接口

    Collections 常用功能 java.utils.Collections是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addA ...

  4. 【PTA】匿名内部类:实现Comparator比较器

    Student类定义如下.利用Arrays工具类中的sort方法对Student数组进行排序.由于Student类没有实现Comparable接口,因此sort方法需要传入一个Comparator比较 ...

  5. (比较器)Comparator比较器

    Comparator比较器 Comparator属于一种挽救的比较器支持,其主要目的是解决一些没有使用Comparable排序的类的对象的排序操作. 范例:程序项目已经开发完成了,并且由于先期的设计并 ...

  6. Java中的集合---------Collections 类---集合的工具类 Comparator比较器

    Collections 2.1 常用功能 java.utils.Collections是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean ...

  7. 【IC5】运算放大器的驱动能力,Comparator比较器电路,运算放大器和功率放大器的区别,

    1,运放直接驱动负载要加一级驱动,什么是一级驱动 你所说的一级驱动是具有一定的电流驱动能力的电路,为什么需要驱动电流能力呢?因为很多运放是设计用来驱动容性负载的,而容性负载不需要有恒定的电流流过,但是 ...

  8. 【Java 8 新特性】Java Comparator | 比较器

    Java Comparator | 比较器 比较器功能方法:compare(T o1, T o2) 1. 使用 Lambda 表达式定义 compare 2. 自定义 compare 实现比较器 比较 ...

  9. 秒杀Java中的Comparator比较器

    教你使用Java中的Comparator比较器 一.知识点简述: 自定义比较器: Comparator:比较器 Comparator是一个接口,无法直接创建对象,需要实现类去创建 创建Comparat ...

  10. Java 的Comparator比较器用法

    1.定义:Comparator是外部比较器,用于比较来对象与对象之间的,两个对象进行比较,多用于集合排序,而Comparable可以认为是一个内比较器,根据对象某一属性进行排序的 2.使用方法 1)定 ...

最新文章

  1. Json返回结果为null属性不显示解决方法
  2. hadoop 1.2.1 安装步骤 伪分布式
  3. 设计模式之_动态代理_06
  4. (pytorch-深度学习系列)使用重复元素的网络(VGG)
  5. python 列表 元祖 字典,Python 列表、元组、字典
  6. Python re 模块深入探索
  7. win11怎么解除网络限制 windows11解除网络限制的设置方法
  8. Docker1.12.6+CentOS7.3 的安装
  9. linux下ftp权限控制
  10. 哈工大计算机报深圳还是本部,哈工大本部和哈工大深圳哪个比较好?
  11. 【数位dp】模版总结
  12. github 新建远程仓库 及 删除远程仓库
  13. html买手机的流程图,支付流程图.html
  14. Parsed mapper file:项目启动不起来
  15. EA enterprise architect 画类图
  16. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)
  17. poi导出数据到word,带图片且图片数量不确定(能确定数量范围,这里是3-20张)
  18. 阿里java技术专家是p几
  19. EBS - FA资产剩余寿命计算脚本
  20. 用“意念”发Twitter,静脉植入脑机接口电极,渐冻症患者把思想转化为文字

热门文章

  1. v-for与v-if可以一起使用吗?如果同时使用v-for和v-if会存在什么样的问题?
  2. 查看matlab当前路径,Matlab 如何查找当前路径下文件夹
  3. 为Mac设置“屏幕使用时间”,来了解您的设备使用情况
  4. 区块链技术能否给跨境贸易带来新的机遇?
  5. 银河麒麟V10业务系统适配记录 处理器:FT2000+ 中国信创服务社区
  6. 不小心执行了rm -f 如何恢复
  7. 沸点大前端组正式成员面试小问题
  8. 许昌学院校园网服务大厅模拟登录
  9. 十分担心外行人抢内行人的饭碗
  10. 判断bug属于前端还是后端