java comparator 排序_Java8 Comparator 排序方法
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 排序方法相关推荐
- java8list怎样排序_Java8 List排序
基础类型List排序 //根据字符串长度进行排序 list.sort((a,b) -> b.length() - a.length());//长在前,短在后 list.sort((a,b) -& ...
- java8排序_java8大排序
package com.xiaosa; import java.util.ArrayList; import java.util.List; public class EightSort { publ ...
- java8 comparator接口_Java8 Comparator 排序方法
Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用 对整数列表排序(升序) List list = Arrays.asList(1, ...
- java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序
本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...
- 【错误记录】Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )
文章目录 一.报错信息 二.解决方案 一.报错信息 使用 Comparator 接口 , 对 ArrayList 集合中的元素排序无效 ; 打印之后没有进行排序 ; 错误代码就不贴出来了 , 随便搜索 ...
- Java核心技术之Comparator和Comparable在排序中的应用
自定义的类User: package com.example.testcomparator;public class User{private String name;private int age; ...
- java排序接口_详解JAVA使用Comparator接口实现自定义排序
1.原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的 ...
- java中sort函数comparator的使用_Comparator 与排序
Java 排序 Java 中经常需要对一个列表进行排序,列表中可能是基本数据类型,也可能是自定义对象,对于自定义对象的排序我们可能只想按照其某个属性排序,甚至多种条件组合对其排序,这些都可以借助于 C ...
- 【Java 8 新特性】Java Comparator.thenComparing | 添加次级排序方式
Java Comparator.thenComparing | 添加次级排序方式 Comparator.thenComparing Comparator.thenComparingInt Compar ...
最新文章
- Android清除缓存功能来实现
- vmware通过vCerter Converter Standalone实现不同VC的V2V虚拟机迁移
- Android中kt转java_将我现有的andorid工作室项目转换为kotlin?
- 程序员如何转型项目经理?
- Atitit 分布式文件系统总结 fastdfs nfs smb webdav ftp 目录 1.1. webdav 是个好的方案。。。Server client都有	1 1.2. ftp也方便ja
- 【Selenium2】【项目实战】
- rbf神经网络参数设置_基于梯度下降法的RBF神经网络逼近(03)
- 最简单PS双重曝光效果制作教程
- Unity3D世界坐标和局部坐标的关系,之间转换浅谈
- namecheap 从域名绑定到SSL配置
- 对抗Windows Defender的方法和思路
- python3 爬取百合网的女人们和男人们
- 海豚湾在哪_菲律宾之海豚湾(PUERTO GALERA)攻略
- 深入了解浏览器的垃圾回收
- Unity3D基础案例-双人坦克
- GMO宣布聘用高级管理人员Amy Shang来领导公司在大中华区的工作
- nginx的作用及原理(一)
- 百度统计中的索引量和site:命令的百度收录量不一致的原因
- linux 提取文件出错,pacman 错误:无法从 ××××获取文件 'core.db'
- 在macOS下启用CGO_ENABLED的交叉编译Go语言项目生成Windows EXE文件