Java8 Comparator 排序方法

Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用

对整数列表排序(升序)

List list = Arrays.asList(1, 4, 2, 6, 2, 8);

list.sort(Comparator.naturalOrder());

System.out.println(list);

对整数列表排序(降序)

List list = Arrays.asList(1, 4, 2, 6, 2, 8);

list.sort(Comparator.reverseOrder());

System.out.println(list);

根据对象属性(年龄)进行排序

public class Test {

public static void main(String[] args) {

List personList = new ArrayList<>();

personList.add(new Person("a", 2));

personList.add(new Person("b", 4));

personList.add(new Person("c", 7));

// 升序

personList.sort(Comparator.comparingInt(Person::getAge));

// 降序

personList.sort(Comparator.comparingInt(Person::getAge).reversed());

System.out.println(personList);

}

public static class Person {

private String name;

private Integer age;

public Person(String name, Integer age) {

this.name = name;

this.age = age;

}

public Integer getAge() {

return age;

}

// ... toString 方法

}

}

根据对象属性(价格、速度)进行排序,需要注意的是,排序有先后之分,不同的顺序会导致不同的结果

public class Test {

public static void main(String[] args) {

List list = new ArrayList<>();

list.add(new Computer("xiaomi",4000,6));

list.add(new Computer("sony",5000,4));

list.add(new Computer("dell",4000,5));

list.add(new Computer("mac",6000,8));

list.add(new Computer("micro",5000,6));

// 先以价格(升序)、后再速度(升序)

list.sort(Comparator.comparingInt(Computer::getPrice).thenComparingInt(Computer::getSpeed));

// 先以速度(降序)、后再价格(升序)

list.sort(Comparator.comparingInt(Computer::getSpeed).reversed().thenComparingInt(Computer::getPrice));

// 先以价格(降序)、后再速度(降序)

list.sort(Comparator.comparingInt(Computer::getPrice).thenComparingInt(Computer::getSpeed).reversed());

System.out.println(list);

}

public static class Computer {

private String name;

private Integer price;

private Integer speed;

public Computer(String name, Integer price, Integer speed) {

this.name = name;

this.price = price;

this.speed = speed;

}

public Integer getPrice() {

return price;

}

public void setPrice(Integer price) {

this.price = price;

}

public Integer getSpeed() {

return speed;

}

public void setSpeed(Integer speed) {

this.speed = speed;

}

// ... toString 方法

}

}

java comparator 排序_Java8 Comparator 排序方法相关推荐

  1. java8list怎样排序_Java8 List排序

    基础类型List排序 //根据字符串长度进行排序 list.sort((a,b) -> b.length() - a.length());//长在前,短在后 list.sort((a,b) -& ...

  2. java8排序_java8大排序

    package com.xiaosa; import java.util.ArrayList; import java.util.List; public class EightSort { publ ...

  3. java8 comparator接口_Java8 Comparator 排序方法

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

  4. java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序

    本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...

  5. 【错误记录】Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 使用 Comparator 接口 , 对 ArrayList 集合中的元素排序无效 ; 打印之后没有进行排序 ; 错误代码就不贴出来了 , 随便搜索 ...

  6. Java核心技术之Comparator和Comparable在排序中的应用

    自定义的类User: package com.example.testcomparator;public class User{private String name;private int age; ...

  7. java排序接口_详解JAVA使用Comparator接口实现自定义排序

    1.原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的 ...

  8. java中sort函数comparator的使用_Comparator 与排序

    Java 排序 Java 中经常需要对一个列表进行排序,列表中可能是基本数据类型,也可能是自定义对象,对于自定义对象的排序我们可能只想按照其某个属性排序,甚至多种条件组合对其排序,这些都可以借助于 C ...

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

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

最新文章

  1. Android清除缓存功能来实现
  2. vmware通过vCerter Converter Standalone实现不同VC的V2V虚拟机迁移
  3. Android中kt转java_将我现有的andorid工作室项目转换为kotlin?
  4. 程序员如何转型项目经理?
  5. Atitit 分布式文件系统总结 fastdfs nfs smb webdav ftp 目录 1.1. webdav 是个好的方案。。。Server client都有 1 1.2. ftp也方便ja
  6. 【Selenium2】【项目实战】
  7. rbf神经网络参数设置_基于梯度下降法的RBF神经网络逼近(03)
  8. 最简单PS双重曝光效果制作教程
  9. Unity3D世界坐标和局部坐标的关系,之间转换浅谈
  10. namecheap 从域名绑定到SSL配置
  11. 对抗Windows Defender的方法和思路
  12. python3 爬取百合网的女人们和男人们
  13. 海豚湾在哪_菲律宾之海豚湾(PUERTO GALERA)攻略
  14. 深入了解浏览器的垃圾回收
  15. Unity3D基础案例-双人坦克
  16. GMO宣布聘用高级管理人员Amy Shang来领导公司在大中华区的工作
  17. nginx的作用及原理(一)
  18. 百度统计中的索引量和site:命令的百度收录量不一致的原因
  19. linux 提取文件出错,pacman 错误:无法从 ××××获取文件 'core.db'
  20. 在macOS下启用CGO_ENABLED的交叉编译Go语言项目生成Windows EXE文件

热门文章

  1. 微信小程序用swiper做旋转木马缩放轮播图
  2. webpack之proxyTable设置跨域
  3. Scrapy框架-创建项目
  4. 什么是浏览器指纹-这篇文章全面告诉你答案
  5. 如何防止浏览器指纹关联
  6. Happywhale -我的第一次Kaggle Solo经验分享,纯纯的都是经验,初学者友好~
  7. 博物馆智慧化建设创新实践
  8. Windows虚拟盘创建和删除
  9. 短视频平台源码,iOS 仿微信语音输入动画
  10. 腾讯云人脸识别接口demo