当前位置: 首页 > news >正文

【comparator, comparable】小总结

  1. 有些类是直接实现了Comparable接口的,这个时候如果要改写排序条件,就直接改写Comparable接口的CompareTo方法

  2. 有些类不是用Comparable接口,而是用了个Comparator类,这时候改写Compare方法

Comparable接口:
只有一个方法compareTo(T o). 具体实践中一般写作o与某个的比较,比如o.age - this.age.
Comparator类:
1) int compare(T o1, T o2) o1,o2比较(>, < , =)
2) boolean equals(Object obj)
*排序时重写comparator
有些类在构造时可以加Comparator参数,比如PriorityQueue,默认是从小到大排序,如果要改写可以加入一个重写了compare方法的comparator
Comparator<Integer> revCmp = new Comparator<Integer>() {

        @Override
        public int compare(Integer left, Integer right) {
            return right.compareTo(left);//原本应该是left.compareTo(right)
        }
    };
    Queue<Integer> Maxqueue= new PriorityQueue<Integer>(k, revCmp);

注意这里compareto方法也是Integer类自带的
记录一些的改写Comparator的情况

1) Arrays.sort() 对二维数组

新构建一个comparator重写compare函数,将比较的内容变成两个二维数组
arr2D:二维数组

Arrays.sort(arr2D, new Comparator<int[]>(){

        public int compare(int[] arr1, int[] arr2){
            if(arr1[0] == arr2[0])
                return arr2[1] - arr1[1];
            else
                return arr1[0] - arr2[0];
        } 
    });
    

2) 对一个类的list进行排序
arrays很容易想到Arrays.sort()的comparator改写,对于list则注意是Collections.sort()改写.Collections还包括list, queue, set...

相关文章:

  • 用C#改写Head First Design Patterns--Command 命令(原创)
  • 海康威视复赛题 ---- 碰撞避免方案(1)
  • C# 中的常用正则表达式总结
  • Node 即学即用 笔记 思维导图
  • 程序员的十层楼:大家都来测测你的技术层级
  • Snail—Hibernate之自写固定组件
  • 购机不求人 液晶电视性能参数全面***
  • Sql Server 中如果使用TransactionScope开启一个分布式事务,使用该事务两个并发的连接会互相死锁吗...
  • Java三大变量小结
  • WPF/Silverlight深蓝团队悄悄登陆了
  • 限制Terminal Server用户登录时间
  • 大话C与Lua(五) 面向对象的数据结构——userdata
  • JAX-WS客户端中引用jar包中的WSDL文件的方法
  • 微软修复了Office套件中“保护视图”功能可被绕过的一个安全漏洞
  • 静电导致笔记本不能开机?
  • #Java异常处理
  • .pyc 想到的一些问题
  • 2019年如何成为全栈工程师?
  • Fastjson的基本使用方法大全
  • jquery ajax学习笔记
  • js如何打印object对象
  • Protobuf3语言指南
  • Twitter赢在开放,三年创造奇迹
  • vue学习系列(二)vue-cli
  • 从零开始学习部署
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 关于Flux,Vuex,Redux的思考
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 漂亮刷新控件-iOS
  • 什么是Javascript函数节流?
  • 一个SAP顾问在美国的这些年
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​io --- 处理流的核心工具​
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 数论-逆元
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Linux(权限管理)
  • #Lua:Lua调用C++生成的DLL库
  • (4)(4.6) Triducer
  • (三分钟)速览传统边缘检测算子
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .net core Swagger 过滤部分Api
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 托管代码与非托管代码
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net反编译工具
  • .Net中的集合
  • /*在DataTable中更新、删除数据*/
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @31省区市高考时间表来了,祝考试成功