java 8 lambda 排序_Java8 用Lambda表达式给List集合排序的实现
Lambda用到了JDK8自带的一个函数式接口Comparator。
准备一个Apple类
public class Apple {
private int weight;
private String color;
public Apple(){}
public Apple(int weight) {
this.weight = weight;
}
public Apple(int weight, String color) {
this.weight = weight;
this.color = color;
}
setters();getters();toString();
}
步骤一:
public class AppleComparator implements Comparator {
@Override
public int compare(Apple o1, Apple o2) {
return o1.getWeight() - o2.getWeight();
}
}
步骤二:准备一个List集合
ArrayList inventory = Lists.newArrayList(
new Apple(10, "red"),
new Apple(5, "red"),
new Apple(1, "green"),
new Apple(15, "green"),
new Apple(2, "red"));
步骤三:顺序排序,三种方式
/**
* 顺序排序
*/
// 1、传递代码,函数式编程
inventory.sort(new AppleComparator());
System.out.println(inventory);
// 2、匿名内部类
inventory.sort(new Comparator() {
@Override
public int compare(Apple o1, Apple o2) {
return o1.getWeight() - o2.getWeight();
}
});
// 3、使用Lambda表达式
inventory.sort((a, b) -> a.getWeight() - b.getWeight());
// 4、使用Comparator的comparing
Comparator comparing = comparing((Apple a) -> a.getWeight());
inventory.sort(comparing((Apple a) -> a.getWeight()));
//或者等价于
inventory.sort(comparing(Apple::getWeight));
步骤四:逆序排序
/**
* 逆序排序
*/
// 1、 根据重量逆序排序
inventory.sort(comparing(Apple::getWeight).reversed());
步骤五:如果两个苹果一样重,就得再找一个条件来进行排序
// 2、如果两个苹果的重量一样重,怎么办?那就再找一个条件进行排序呗
inventory.sort(comparing(Apple::getWeight).reversed().thenComparing(Apple::getColor));
参考:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java 8 lambda 排序_Java8 用Lambda表达式给List集合排序的实现相关推荐
- java sortedlist 固定容量_Java8 使用 stream().sorted()对List集合进行排序的操作
1.声明一个测试对象 import java.time.LocalDate; import java.util.List; import lombok.Data; @Data public class ...
- java 8 lambda sort_Java8 用Lambda表达式给List集合排序的实现|chu
Lambda用到了JDK8自带的一个函数式接口Comparator. 准备一个Apple类 public class Apple { private int weight; private Strin ...
- lambdas 排序_Java8 Lambdas:解释性能缺陷的排序
lambdas 排序 与Peter Lawrey合作撰写 . 几天前,我对使用新的Java8声明式的排序性能提出了一个严重的问题. 在这里查看博客文章. 在那篇文章中,我仅指出了问题,但在这篇文章中, ...
- java8新特性:对map集合排序
一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...
- java lambda 排序_Java8特性:Lambda表达式之概念篇
Java自诞生已经有十几个年头了,目前也已经发布了第十三个大版本,其中Java8是常用的版本中最新的一个版本.而Java8最大的特性就是:Lambda表达式.函数式接口和Stream流. 本篇我只介绍 ...
- Java中lambda表达式去重_JAVA8中Lambda和Stream
Java8于2014年3月份发布,其主要更新的特性有:函数式接口.Lambda 表达式.集合的流式操作.注解的更新.安全性的增强.IO\NIO 的改进.完善的全球化功能等,本文将介绍Lambda表达式 ...
- java 8 lambda sort_java8新特性:Lambda表达式ArrayList排序
java8新特性有很多,这里先对Lambda表达式进行简单的ArrayList排序体验,首先要使用java1.8,必须要先在myeclipse或者eclipse中装jdk1.8才行,需要注意的一点是, ...
- java 8 lambda reduce_JDK8新特性Lambda表达式体验
"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstra ...
- 【Java】反射、枚举、Lambda表达式
一.反射 1 定义 2 用途(了解) 3 反射基本信息 4 反射相关的类(重要) 4.1 Class类(反射机制的起源 ) 4.1.1 Class类中的相关方法(方法的使用方法在后边的示例当中) 4. ...
最新文章
- php实现socket
- 所有受限制的应用程序包_【译】使用Blazor构建桌面应用
- Java黑皮书课后题第5章:**5.33(完全数)如果一个正整数等于除它它本身外其他所有除数之和。就称之为完全数。如6是第一个完全数,因为6=1+2+3。10000以下的完全数有4个,编写程序找出
- mysql delimiter的作用_MySQL数据库中delimiter的作用概述
- 监视和调整Linux网络协议栈:接收数据
- c语言空白字符的aci,c语言的保留字符有32个是那些啊???代表什么于是啊??...
- MOSS搜索的爬网错误【访问被拒绝。请验证默认内容访问账户是否有权访问此库】...
- 如何卸载mysql server 2005_彻底的卸载SQL Server2005
- go Test Benchmark 性能测试
- 赛迪中国ECM市场报告解读一:市场需求在2023年将达到275亿元
- 如何设置Word自动检查语法错误
- Vue中使用地图平台MapboxGL
- 自然语言处理面试基础
- Robot Framework(3)——RIDE工具详解
- 基于Arduino的显示测量环境数据设计
- Vue已知文件地址完成图片视频单个下载及批量下载
- Windows下设置护眼模式
- 全网最直接简单。百度富文本跨域上传文件到文件服务器
- (180页PPT)|清华大学孙富春教授深度讲解: 人工智能技术与产业发展
- php smarty使用,php-smarty模板使用教程(二)