Java8 Comparator 排序方法
Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用
- 对整数列表排序(升序)
List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8);
list.sort(Comparator.naturalOrder());
System.out.println(list);
- 对整数列表排序(降序)
List<Integer> 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<Person> 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<Computer> 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 方法
}
}
Java8 Comparator 排序方法的更多相关文章
- JAVA8 List排序
先定义一个实体类 @Data @AllArgsConstructor @NoArgsConstructor public class Human { private String name; priv ...
- List排序方法
可用使用Collections.sort(List<T> list)和Collections.sort(List<T> list, Comparator<? super ...
- java8学习之方法引用详解及默认方法分析
方法引用: 之前花了很多时间对Lambda表达式进行了深入的学习,接下来开启新的主题---方法引用(Method References),其实在之前的学习中已经使用过了,如: 那方法引用跟Lambda ...
- java提供的默认list排序方法-转
1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...
- Java ArrayList排序方法详解
由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...
- 几种list排序方法
package com.lgx.jdk8.part02; import java.util.*; import java.util.stream.Collectors; /** * Comparato ...
- Java ArrayList的不同排序方法
本文由 ImportNew - 温布利往事 翻译自 dzone.欢迎加入翻译小组.转载请见文末要求. 由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.Arra ...
- ch1_6_1求解两种排序方法问题
考拉有n个字符串字符串,任意两个字符串长度都是不同的. 考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序.例如: "car" < "carr ...
- JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)
1.使用对象字面量定义对象 var person={}; 使用这种方式创建对象时,实际上不会调用Object构造函数. 开发人员更喜欢对象字面量的语法. 2.有时候需要传递大量可选参数的情形时,一 ...
随机推荐
- python StringIO&BytesIO
StringIO StringIO就是在内存中读写str 要把str写入StringIO,先创建一个StringIO >>> from io import StringIO>& ...
- 在Clion里链接gtest
本来以为像之前链接boost一样,加个链接路径就好了,没想到报找不到gtest的符号,搞了半天,没弄明白啥原因. 网上也没搜到好方法,只能把gtest的源码加到项目里,然后在链接了. CMake配置如 ...
- zt C++ list 类学习笔记
C++ list 类学习笔记 分类: C++ 2011-09-29 00:12 7819人阅读 评论(0) 收藏 举报 listc++iteratorvectorcconstructor 双向循环链表 ...
- tp5.0和tp3.2中前台模板IF标签和FOREACH的区别
IF标签 tp3.2 <if condition="($name eq 1) OR ($name gt 100) "> value1 <elseif condit ...
- Windows 2008 Scheduled tasks result codes
0 or 0x0: The operation completed successfully. 1 or 0x1: Incorrect function called or unknown funct ...
- 学会WCF之试错法——客户端调用基础
1当客户端调用未返回结果时,服务不可用(网络连接中断,服务关闭,服务崩溃等) 客户端抛出异常 异常类型:CommunicationException InnerException: Message: ...
- C#通过指针读取文件
// readfile.cs // 编译时使用:/unsafe // 参数:readfile.txt // C#通过指针读取文件.使用该程序读并显示文本文件. using System; using ...
- Redis(RedisTemplate)使用list链表
RedisTemplate配置:https://www.cnblogs.com/weibanggang/p/10188682.html package com.wbg.springRedis.test ...
- HDU 1273 漫步森林(数学 找规律)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1273 漫步森林 Time Limit: 2000/1000 MS (Java/Others) M ...
- 最新SQL手工注入语句&SQL注入大全
看看下面的1.判断是否有注入;and 1=1;and 1=2 2.初步判断是否是mssql;and user>0 3.判断数据库系统;and (select count(*) from syso ...