比较器:Comparator的用法
在使用优先队列时,我们可以自定义比较器,构造方法如下,这是在做leetcode.502题时遇到的,有思路,但是不会实现,现在用这篇文章记录一下:
// 构造方法public PriorityQueue(Comparator<? super E> comparator) {this(DEFAULT_INITIAL_CAPACITY, comparator);}// 使用Queue<Integer> queue = new PriorityQueue<>((x, y) -> y - x);
一、概述
Comparable和Comparator在java中都是用于来比较数据大小。实现Comparable接口需要重写compareTo方法,实现Comparator方法需要重写compare方法。 这两个方法返回值都是int类型,根据返回值来判断比较对象的大小,从而实现排序。
二、用法
Comparable需要实现,重写compareto方法
public int compareTo(T o);
从小到大:this.getXXX - o.getXXX()
从大到小:o.getXXX - this.getXXX
Comparetor接口,重写compare()方法
public static int compare(double d1, double d2) {}
从小到大:return d1 - d2;
从大到小: return d2 - d1;
再加一种可直接排序的方法,我们使用User对象来进行验证
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer age;private Double money;private String name;
}
public class CompareterTest {public static void main(String[] args) {List<User> list = new ArrayList<>();list.add(new User(1, 1.0, "c"));list.add(new User(1, 2.0, "a"));list.add(new User(1, 2.0, "b"));list.add(new User(3, 2.0, "a"));list.add(new User(3, 1.0, "c"));list.add(new User(3, 3.0, "b"));list.add(new User(2, 1.0, "b"));System.out.println(list);// 在集合工具类排序时可使用thenComparing方法进行多字段排序Collections.sort(list, Comparator.comparingInt((User::getAge)).thenComparing(User::getMoney).thenComparing(User::getName));Collections.sort(list, (a, b) -> {// 按年龄倒叙return b.getAge() - a.getAge();});System.out.println(list);}
}
也可在对象中实现Comparetor接口的compare方法进行自定义排序
比较器:Comparator的用法相关推荐
- 关于comparable与comparator的用法(即自定义集合框架用法 )
1 package javastudy; 2 3 import java.util.Comparator; 4 import java.util.Iterator; 5 import java.uti ...
- 比较器Comparator使用
最近在项目中做视频搜索功能,在获得视频结果集后需要对视频列表根据集数做排序,自然而然想到了用jdk的比较器Comparator, 编写代码实现如下 private void sortResItem(L ...
- JAVA语言-比较器Comparator(java中Comparable和Comparator的区别)
文章目录 一.什么是Comparator 二.Java compare方法和compareTo方法 三.java中Comparable和Comparator的区别 Comparator的例子 三.de ...
- Java 对象排序 Comparable接口和比较器Comparator的使用
我这里使用的是Treeset存储的学生信息,定义了学生类,对学生信息进行一个排序: 方法一 对象排序的的方法是,让元素所属类实现 Comparable 接口 ,重写 comparaTo(To) 方法 ...
- java中sort函数comparator的使用_Java Comparator comparingInt()用法及代码示例
compareInt(java.util.function.ToIntFunction)方法接受一个函数作为参数,从类型T中提取一个int排序键,并返回一个与该排序键进行比较的Comparator.返 ...
- java comparator用法_Java Comparator thenComparingLong()用法及代码示例
Java中Comparator接口的thenComparingLong(java.util.function.ToLongFunction)方法将返回字典顺序比较器,该函数具有提取Long排序键的函数 ...
- java comparator相等_Java Comparator thenComparingDouble()用法及代码示例
Java中Comparator接口的thenComparingDouble(java.util.function.ToDoubleFunction)方法将返回字典顺序比较器,并带有提取双精度排序键的函 ...
- 判断比较器Comparator和Comparable的升序降序问题
比较器 降序升序问题 Comparator中的compare方法 //升序排序 public int compare(int o1, int o2) {return o1 - o2; }//降序排序 ...
- java基础---关于比较器Comparator和Comparable
package com.henu.jihe;import java.util.ArrayList; import java.util.Comparator; import java.util.List ...
最新文章
- sql server中的hash应用优化
- 白话详细解读(二)-----AlexNet
- tensorflow saver_TensorFlow: Model Persistence
- 可能是最全面的 Java G1学习笔记
- 关于 win7 远程桌面的多用户问题
- FreeModbus移植到STM32F107(以太网传输方式)
- python @修饰符_Python修饰符,返回替换了一个或多个参数的函数
- java多线程编码实现_Java多线程编码
- 微信网页开发 thinkphp5.0的try-catch和重定向
- kerberos的系统搭建
- 苹果 tvOS 10 第二个开发者测试版发布
- win10桌面null图标删除
- 《C陷阱与缺陷》读书笔记与总结
- CALL TRANSACTION使用及传参数和权限检查(authority-check)
- 青春是一场眼眸里的微笑
- Python全栈开发-gitgithub快速入门
- miui12是Android版本,miui12基于安卓几版本开发的?miui12是安卓11吗[多图]
- 使用Go+WebSocket练习总结
- Vue之路由--SPA模式
- 解决突然跳出命令行(闪烁)
热门文章
- 第9章 初识SqlSugarCore之AutoMapper
- 华为 android 11,Android 11发布,华为正式官宣,新系统更值得期待!
- 小学计算机英语,纳米盒小学英语电脑版
- 词嵌入(word embedding)学习记录
- Airtest IDE 自动化测试10——text和keyevent
- 富人与穷人的不同思维
- 4.图片便签和路径说明
- 不禁网页的浏览器_明明浏览“不良网站”危险,为啥手机浏览器却不强制禁止访问?...
- 华为鸿蒙发布会不选深圳,最高149999!华为一系列新品发布:不仅鸿蒙,这就是未来...
- python系列—数据类型篇(数值型)