java比较器原理理解
以外部比较器为例,如下图:o1在o2的后面,如:o1是s2,o2是s1;o1是s3,o2是s2。(此顺序是源码比较顺序),然后返回负数会继续循环至非负数,负数那一段会交换;正数就不用管。源码部分如图2,c.compare方法就是自己重写的方法,对图1来说就是重写的对Student排序的方法,然后lo值为0,runHi为1。所以,o1-o2是升序:因为后面的数减前面的数小于0即后面的小于前面的,交换,就相当于把小的放前面即升序。
图1:外部比较器示例图
List<Student> list = new ArrayList<>();Student s1 = new Student("shallow",25);Student s2 = new Student("feather",23);Student s3 = new Student("lll",22);Collections.addAll(list,s1,s2,s3); //collections工具类Collections.sort(list, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {// 升序return o1.getAge() -o2.getAge();}});
图2:jdk源码
if (c.compare(a[runHi++], a[lo]) < 0) { // Descendingwhile (runHi < hi && c.compare(a[runHi], a[runHi - 1]) < 0)runHi++;reverseRange(a, lo, runHi);} else { // Ascendingwhile (runHi < hi && c.compare(a[runHi], a[runHi - 1]) >= 0)runHi++;}
java比较器原理理解相关推荐
- JAVA注解--原理理解,(借用他人资料举例,一通百通)
B站链接 提示: 1.上面的链接是笔者认为讲注解最好的资料,通过例子帮你理解注解(可以看视频的69-71,倍速的话半个小时就够了) 2.个人认为如果想要理解注解的话需要了解反射的使用: 3.我之前看的 ...
- Java 集合深入理解 (十一) :HashMap之实现原理及hash碰撞
文章目录 前言 哈希表原理 实现示例 HashMap实现原理 全篇注释分析 实现注意事项 默认属性分析 属性分析 构造方法分析 重要的put方法 总结 前言 哈希表(hashMap)又叫散列表 是一种 ...
- Java 多线程 —— 深入理解 volatile 的原理以及应用
转载自 Java 多线程 -- 深入理解 volatile 的原理以及应用 推荐阅读:<java 多线程-线程怎么来的> 这一篇主要讲解一下volatile的原理以及应用,想必看完这一篇 ...
- day04--java高级编程:API:Object、String,Buffer、包装类、日期、java比较器、BigInteger、进制、length区别,IO流,路径,序列化id,编码
1 API 1.1 Api文档下载 1.API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口,一切可以调用的东西都是API. ...
- 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程
参考网址:http://blog.csdn.net/luanlouis/article/details/50529868 0.前言 读完本文,你将了解到: 一.为什么说Jabalpur语言是跨平台的 ...
- Java NIO原理 图文分析及代码实现
最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.可以参考: ...
- Java 面试经典题解析:谈谈你对 Java 平台的理解?
作者|杨晓峰出处|极客时间<Java技术核心 36讲>专栏 从你接触 Java开发到现在,你对 Java最直观的印象是什么呢?是它宣传的 "Compile once, run a ...
- java图的建立field_《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的...
0.前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述 ...
- Java NIO原理图文分析及代码实现
2019独角兽企业重金招聘Python工程师标准>>> 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它 ...
最新文章
- 游戏 AI 相关文章
- DbVisualizer数据库连接工具默认查询结果只显示100条解决方法,dbvis如何展示更多行,如何显示全部数据
- springmvc数据验证
- 如何解决大规模机器学习的三大痛点?
- Java桌球小游戏1
- MySQL:定时任务被拒绝
- python3 x和python2 x区别_Python3.x和Python2.x的区别(转存参考)
- php测试接口的小工具,PHP API接口测试小工具
- 图解Team Foundation Server 2013系列
- 尚硅谷谷粒商城项目介绍
- Java生成png文件字体不清晰_java 文本图片字体模糊优化处理
- sigmoid函数推导过程
- 说说react-custom-scrollbars插件在react hooks版本中的使用
- 辅助神器——Kaggle
- tsconfig之strict严格模式相关
- 第44章 	MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
- 【程序员讲婚庆】婚庆公司
- 在爱奇艺的B站大佬,有点强
- 【机器学习算法笔记系列】朴素贝叶斯(NB)算法详解和实战
- 高中数学必修3知识点总结归纳:第一章算法初步
热门文章
- 59 Three.js 渲染两个场景和使用不同的相机,渲染在一个场景里面
- 微软亚洲研究院院长:“中国不妨引进科技外援”
- MATLAB 数据处理(二)非线性拟合——洛伦兹拟合(Lorentz fit)
- CT 三维重建的后处理方法
- Java最新面试题100道,包含答案示例(1-10题)
- 浅谈量子量化股票交易的基本原理
- 计算机网络学习16:以太网交换机自学习与帧转发流程、生成树协议STP
- gs地图开发_当红小生东风风神奕炫GS 有颜有型
- Material Design Lite组件之徽章
- JAVA开发微信支付(JSAPI支付)