comparingInt

  • comparingInt
    • 自定义排序参数
    • 优先队列,重写比较器
  • 后序

comparingInt

static <T> Comparator<T> comparingInt​(ToIntFunction<? super T> keyExtractor)
接受提取的一个函数int从类型分类键T ,并返回一个Comparator ,通过该排序关键字进行比较。
如果指定的功能也可串行化,则返回的比较器是可序列化的。 (摘自API)

  • 参数类型
    T - 要比较的元素的类型

  • 参数
    keyExtractor - 用于提取整数排序键的函数

  • 结果
    比较器,其被提取的密钥进行比较

  • 异常
    NullPointerException - 如果参数为空

API Note:
例如,要获得一个Comparator ,它比较了Person对象的姓氏,

> Comparator<Person> byLastName = Comparator.comparing(Person::getLastName);

自定义排序参数

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;// 重写比较器
class Persons implements  Comparable<Persons> {String name;int age;public Persons(String name, int age) {this.name = name;this.age = age;}// 定义此方法接受单个参数keyExtractor,该参数是用于提取整数排序键的函数。public int getAge() {return this.age;}// 按姓氏ASCII降序,反过来升序@Overridepublic int compareTo(Persons o) {return this.name.compareTo(o.name);}
}public class ComparatorTest {public static void main(String[] args) {// create some Persons objectsPersons p1 = new Persons("B", 10);Persons p2 = new Persons("D", 20);Persons p3 = new Persons("A", 18);// before sortList<Persons> list = Arrays.asList(p2, p1, p3);System.out.println("Before Sort:");list.forEach(Persons -> System.out.println("Persons name"+Persons.name));// 自定义比较器Comparator<Persons> byAge = Comparator.comparingInt(Persons::getAge);Collections.sort(list, byAge);System.out.println("After Sort:");list.forEach(Persons -> System.out.println("Persons age"+Persons.age));}
}

结果

Before Name Sort:
Persons nameD
Persons nameB
Persons nameA

After Age Sort:
Persons nameB
Persons nameA
Persons nameD

优先队列,重写比较器

 // 定义优先队列,修改默认升序的排序关键字 key
PriorityQueue<int[]> minHeap = new PriorityQueue<>(Comparator.comparingInt(a -> a[1]));

后序

请参考:Java Arrays.asList() 的避雷

请参考:Java中 forEach() 和 Iterator 与 增强for循环 的那些事儿

参考大佬文章,及官方API,向优秀的人致敬!

加油!

Java Comparator comparingInt() 的使用相关推荐

  1. java中sort函数comparator的使用_Java Comparator comparingInt()用法及代码示例

    compareInt(java.util.function.ToIntFunction)方法接受一个函数作为参数,从类型T中提取一个int排序键,并返回一个与该排序键进行比较的Comparator.返 ...

  2. Java Comparator 珍藏版

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 来源:开源技术大全 Java java.util.Comparator功能接口对对象集合强制进行排序. ...

  3. Java Comparator源码总结 Comparator源码注释翻译和解析中英文对照版

    版本 JDK8(JDK1.8) Comparator接口重点 1.Comparator接口是一个函数式接口,里面只有一个虚方法compare(T o1, T o2),该接口表示一个比较器,而实现Com ...

  4. 【Java 8 新特性】Java Comparator | 比较器

    Java Comparator | 比较器 比较器功能方法:compare(T o1, T o2) 1. 使用 Lambda 表达式定义 compare 2. 自定义 compare 实现比较器 比较 ...

  5. 【Java 8 新特性】Java Comparator.comparing | 提取对象属性,按照指定规则排序

    Java Comparator.comparing | 提取对象属性,按照指定规则排序 Comparator.comparing Comparator.comparingInt Comparator. ...

  6. java comparator内部类_java - Java Comparator使用.reverseOrder()但内部类 - 堆栈内存溢出...

    我正在创建一个简单的程序来了解Java Comparator类. 我已经按顺序对一个Arraylist了排序,但现在我想按降序对列表进行排序,但是我在调​​用.reverseOrder()方法时遇到问 ...

  7. 【Java 8 新特性】Java Comparator.naturalOrder | 自然排序

    Java Comparator.naturalOrder | 自然排序 与 Stream.sorted 一起使用 与 Collections.sort 一起使用 与 List.sort 一起使用 与 ...

  8. java comparator 排序_Java8 Comparator 排序方法

    Java8 Comparator 排序方法 Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用 对整数列表排序(升序) List li ...

  9. 【Java 8 新特性】Java Comparator.thenComparing | 添加次级排序方式

    Java Comparator.thenComparing | 添加次级排序方式 Comparator.thenComparing Comparator.thenComparingInt Compar ...

最新文章

  1. c语言测试代码怎么写,初学C语言,写了一个测试手速的工具,代码发上来,存着。。...
  2. 杨元庆捐资1亿人民币,要为母校上海交大建“最好的”高性能计算中心
  3. python读取中文-python读取中文txt文本
  4. SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可回滚)
  5. 5/7 SELECT语句:过滤(LIKE使用通配符)
  6. Linux中Shell数组的笔记
  7. XmlDocument类
  8. 数据结构实验之排序三:bucket sort
  9. opencv对图像是软解码_C ++ OpenCV解码缓慢
  10. Oracle锁表处理
  11. 希尔排序是一种稳定的排序算法_排序算法—希尔排序
  12. Apple计划开发完全定制的GPU架构
  13. 如何用纯 CSS 创作一组昂首阔步的圆点
  14. Angular2-路由重定向的办法
  15. 罗技 连点 脚本_罗技G933S无线游戏耳机评测
  16. 顶级知识管理工具Evernote的GTD应用详细指南
  17. 《Adobe Flash CS6中文版经典教程》——第1课 Flash CS6快速入门1.1 启动Flash并打开文件...
  18. Axure 9 简介【原型工具】
  19. python 经典图书排行榜_书榜 | 计算机书籍(9.2-9.8)销售排行榜
  20. ACM模版-f_zyj v 2.0——更新通知

热门文章

  1. python操作execl——收藏必备
  2. java printwriter追加_Java PrintWriter append()方法
  3. A The system proxy was changed. Click to reenable capturing.A系统代理被更改。单击以重新启用捕获。
  4. Dlib库学习与介绍
  5. 寻侠家将选择,后期家将选择经验谈
  6. 如何让硬盘的速度更快一些
  7. 高并发系统设计——“三高”解决方案
  8. 【Bleak】一、简介及安装方法
  9. listview winfrom 表头_C# 设置Listview的Columns标头颜色和高度
  10. 苹果公布iPhone 2.0软件及SDK