以外部比较器为例,如下图: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比较器原理理解相关推荐

  1. JAVA注解--原理理解,(借用他人资料举例,一通百通)

    B站链接 提示: 1.上面的链接是笔者认为讲注解最好的资料,通过例子帮你理解注解(可以看视频的69-71,倍速的话半个小时就够了) 2.个人认为如果想要理解注解的话需要了解反射的使用: 3.我之前看的 ...

  2. Java 集合深入理解 (十一) :HashMap之实现原理及hash碰撞

    文章目录 前言 哈希表原理 实现示例 HashMap实现原理 全篇注释分析 实现注意事项 默认属性分析 属性分析 构造方法分析 重要的put方法 总结 前言 哈希表(hashMap)又叫散列表 是一种 ...

  3. Java 多线程 —— 深入理解 volatile 的原理以及应用

    转载自  Java 多线程 -- 深入理解 volatile 的原理以及应用 推荐阅读:<java 多线程-线程怎么来的> 这一篇主要讲解一下volatile的原理以及应用,想必看完这一篇 ...

  4. day04--java高级编程:API:Object、String,Buffer、包装类、日期、java比较器、BigInteger、进制、length区别,IO流,路径,序列化id,编码

    1 API 1.1 Api文档下载 1.API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口,一切可以调用的东西都是API. ...

  5. 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程

    参考网址:http://blog.csdn.net/luanlouis/article/details/50529868 0.前言 读完本文,你将了解到: 一.为什么说Jabalpur语言是跨平台的 ...

  6. Java NIO原理 图文分析及代码实现

    最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.可以参考: ...

  7. Java 面试经典题解析:谈谈你对 Java 平台的理解?

    作者|杨晓峰出处|极客时间<Java技术核心 36讲>专栏 从你接触 Java开发到现在,你对 Java最直观的印象是什么呢?是它宣传的 "Compile once, run a ...

  8. java图的建立field_《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的...

    0.前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述 ...

  9. Java NIO原理图文分析及代码实现

    2019独角兽企业重金招聘Python工程师标准>>> 前言:  最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它 ...

最新文章

  1. 游戏 AI 相关文章
  2. DbVisualizer数据库连接工具默认查询结果只显示100条解决方法,dbvis如何展示更多行,如何显示全部数据
  3. springmvc数据验证
  4. 如何解决大规模机器学习的三大痛点?
  5. Java桌球小游戏1
  6. MySQL:定时任务被拒绝
  7. python3 x和python2 x区别_Python3.x和Python2.x的区别(转存参考)
  8. php测试接口的小工具,PHP API接口测试小工具
  9. 图解Team Foundation Server 2013系列
  10. 尚硅谷谷粒商城项目介绍
  11. Java生成png文件字体不清晰_java 文本图片字体模糊优化处理
  12. sigmoid函数推导过程
  13. 说说react-custom-scrollbars插件在react hooks版本中的使用
  14. 辅助神器——Kaggle
  15. tsconfig之strict严格模式相关
  16. 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
  17. 【程序员讲婚庆】婚庆公司
  18. 在爱奇艺的B站大佬,有点强
  19. 【机器学习算法笔记系列】朴素贝叶斯(NB)算法详解和实战
  20. 高中数学必修3知识点总结归纳:第一章算法初步

热门文章

  1. 59 Three.js 渲染两个场景和使用不同的相机,渲染在一个场景里面
  2. 微软亚洲研究院院长:“中国不妨引进科技外援”
  3. MATLAB 数据处理(二)非线性拟合——洛伦兹拟合(Lorentz fit)
  4. CT 三维重建的后处理方法
  5. Java最新面试题100道,包含答案示例(1-10题)
  6. 浅谈量子量化股票交易的基本原理
  7. 计算机网络学习16:以太网交换机自学习与帧转发流程、生成树协议STP
  8. gs地图开发_当红小生东风风神奕炫GS 有颜有型
  9. Material Design Lite组件之徽章
  10. JAVA开发微信支付(JSAPI支付)