lambda java 排序_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));
参考:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
lambda java 排序_Java8 用Lambda表达式给List集合排序的实现相关推荐
- java 8 lambda 排序_Java8 用Lambda表达式给List集合排序的实现
Lambda用到了JDK8自带的一个函数式接口Comparator. 准备一个Apple类 public class Apple { private int weight; private Strin ...
- 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 8 StreamAPI 和 lambda表达式 总结(一)--lambda表达式
这些天看见另一本好书<给大忙人看的Java SE 8>,其中的新特性 StreamAPI 和 lambda表达式 是之前jdk没有提供的新特性,也是jdk8 重要的更新内容,我会总结一下它 ...
- lambda java 表达式_Java中的Lambda表达式
介绍 Lambda函数是 Java 8 附带的一项功能,它是该语言向 函数式编程 迈出的第一步,这是实现各种兼容 范例的 有用功能的普遍趋势. 引入lambda函数的动机主要是为了减少传递给类实例以模 ...
- 使用Lambda表达式对中文拼音排序(按中文字典排序)
使用Lambda表达式对中文拼音排序(中文字典排序) 今天项目上有一个需求,要求对用户名按照拼音排序(不通过数据库端SQL操作),由于用户名为中文,所以使用常规排序并不能解决问题. package l ...
- Java 8 新特性 lambda表达式
/ Created by Manager on 2021/4/1. Java 8 新特性 lambda表达式 StreamAPI 新日期 新注解 */ 视频连接 1https://www.bilibi ...
- Java 8 新特性Lambda 表达式
Java 8 新特性Lambda 表达式 一.常用循环 二.匿名内部类 三.排序集合 四.循环打印对象 五.根据条件修改 六.排序 七.求和 八.统计方法 九.材料 一.常用循环 public cla ...
- java 函数式接口与lambda表达式的关系
函数式接口与lambda表达式的关系 在java中,lambda表达式与函数式接口是不可分割的,都是结合起来使用的. 对于函数式接口,我们可以理解为只有一个抽象方法的接口,除此之外它和别的接口相比并没 ...
最新文章
- 计算机组装人员的职责,自控设备组装员
- key php 转小写_PHP代码层防护与绕过
- 这5家纳米技术公司正在推动医疗检测的变革
- 学习XHTML的强烈欲望、!
- WinForm窗体间如何传值
- 关于redo(二)插入更新数据时的效率比较
- 传统网站与营销型网站区别盘比
- python怎么解释语言_python属于解释语言吗
- js 用下标获取map值_js map方法处理返回数据,获取指定数据简写方法
- maven项目发布到tomcat后没有lib目录解决方案
- typescript 与 js 开发 react 的区别
- 用java语言求老汉卖西瓜程序_Java编程练习题
- 软考-中级-网络工程师-知识点个人总结(一)
- 旋转变换(二)欧拉角
- 应用程序正常初始化(0xc0150002)失败。请单击“确定”,终止应用程序
- 政府采购法律法规百题知识竞赛试题CSDN
- c还是java(雨思版)
- PacketTrace基本使用
- 力扣 378. 有序矩阵中第 K 小的元素
- 今天测试了两个跑步软件
热门文章
- PMP培训机构哪家好,求推荐?
- 越狱后显示网络无法连接服务器,苹果手机:iOS12 越狱后 Cydia 无法联网闪退等问题汇总...
- JMeter下载及使用
- jmeter下载文件
- 双十一报告:服饰企业借助团队管理工具飞项高效协作
- Java词法分析器的设计与实现
- java集成kettle教程(附示例代码)
- nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!...
- 数说海南——简单分析海南各市县近六年人口吸引力情况
- 计算机二级考试vb内容,计算机二级VB考试考什么内容?(一)