Comparator--比较器
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--比较器相关推荐
- Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)
1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...
- java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...
在涉及到数组, 集合等这些地方经常会需要用到排序算法, 在Java中的Collections类中有sort方法, 除了需要传入一个Comparator比较器, 或者需要排序的类实现了Comparabl ...
- 进阶08 Collections实现类、Comparator比较器接口
Collections 常用功能 java.utils.Collections是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addA ...
- 【PTA】匿名内部类:实现Comparator比较器
Student类定义如下.利用Arrays工具类中的sort方法对Student数组进行排序.由于Student类没有实现Comparable接口,因此sort方法需要传入一个Comparator比较 ...
- (比较器)Comparator比较器
Comparator比较器 Comparator属于一种挽救的比较器支持,其主要目的是解决一些没有使用Comparable排序的类的对象的排序操作. 范例:程序项目已经开发完成了,并且由于先期的设计并 ...
- Java中的集合---------Collections 类---集合的工具类 Comparator比较器
Collections 2.1 常用功能 java.utils.Collections是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean ...
- 【IC5】运算放大器的驱动能力,Comparator比较器电路,运算放大器和功率放大器的区别,
1,运放直接驱动负载要加一级驱动,什么是一级驱动 你所说的一级驱动是具有一定的电流驱动能力的电路,为什么需要驱动电流能力呢?因为很多运放是设计用来驱动容性负载的,而容性负载不需要有恒定的电流流过,但是 ...
- 【Java 8 新特性】Java Comparator | 比较器
Java Comparator | 比较器 比较器功能方法:compare(T o1, T o2) 1. 使用 Lambda 表达式定义 compare 2. 自定义 compare 实现比较器 比较 ...
- 秒杀Java中的Comparator比较器
教你使用Java中的Comparator比较器 一.知识点简述: 自定义比较器: Comparator:比较器 Comparator是一个接口,无法直接创建对象,需要实现类去创建 创建Comparat ...
- Java 的Comparator比较器用法
1.定义:Comparator是外部比较器,用于比较来对象与对象之间的,两个对象进行比较,多用于集合排序,而Comparable可以认为是一个内比较器,根据对象某一属性进行排序的 2.使用方法 1)定 ...
最新文章
- Json返回结果为null属性不显示解决方法
- hadoop 1.2.1 安装步骤 伪分布式
- 设计模式之_动态代理_06
- (pytorch-深度学习系列)使用重复元素的网络(VGG)
- python 列表 元祖 字典,Python 列表、元组、字典
- Python re 模块深入探索
- win11怎么解除网络限制 windows11解除网络限制的设置方法
- Docker1.12.6+CentOS7.3 的安装
- linux下ftp权限控制
- 哈工大计算机报深圳还是本部,哈工大本部和哈工大深圳哪个比较好?
- 【数位dp】模版总结
- github 新建远程仓库 及 删除远程仓库
- html买手机的流程图,支付流程图.html
- Parsed mapper file:项目启动不起来
- EA enterprise architect 画类图
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)
- poi导出数据到word,带图片且图片数量不确定(能确定数量范围,这里是3-20张)
- 阿里java技术专家是p几
- EBS - FA资产剩余寿命计算脚本
- 用“意念”发Twitter,静脉植入脑机接口电极,渐冻症患者把思想转化为文字