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集合排序的实现相关推荐

  1. java 8 lambda 排序_Java8 用Lambda表达式给List集合排序的实现

    Lambda用到了JDK8自带的一个函数式接口Comparator. 准备一个Apple类 public class Apple { private int weight; private Strin ...

  2. java 8 lambda sort_Java8 用Lambda表达式给List集合排序的实现|chu

    Lambda用到了JDK8自带的一个函数式接口Comparator. 准备一个Apple类 public class Apple { private int weight; private Strin ...

  3. lambdas 排序_Java8 Lambdas:解释性能缺陷的排序

    lambdas 排序 与Peter Lawrey合作撰写 . 几天前,我对使用新的Java8声明式的排序性能提出了一个严重的问题. 在这里查看博客文章. 在那篇文章中,我仅指出了问题,但在这篇文章中, ...

  4. java8新特性:对map集合排序

    一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...

  5. JAVA 8 StreamAPI 和 lambda表达式 总结(一)--lambda表达式

    这些天看见另一本好书<给大忙人看的Java SE 8>,其中的新特性 StreamAPI 和 lambda表达式 是之前jdk没有提供的新特性,也是jdk8 重要的更新内容,我会总结一下它 ...

  6. lambda java 表达式_Java中的Lambda表达式

    介绍 Lambda函数是 Java 8 附带的一项功能,它是该语言向 函数式编程 迈出的第一步,这是实现各种兼容 范例的 有用功能的普遍趋势. 引入lambda函数的动机主要是为了减少传递给类实例以模 ...

  7. 使用Lambda表达式对中文拼音排序(按中文字典排序)

    使用Lambda表达式对中文拼音排序(中文字典排序) 今天项目上有一个需求,要求对用户名按照拼音排序(不通过数据库端SQL操作),由于用户名为中文,所以使用常规排序并不能解决问题. package l ...

  8. Java 8 新特性 lambda表达式

    / Created by Manager on 2021/4/1. Java 8 新特性 lambda表达式 StreamAPI 新日期 新注解 */ 视频连接 1https://www.bilibi ...

  9. Java 8 新特性Lambda 表达式

    Java 8 新特性Lambda 表达式 一.常用循环 二.匿名内部类 三.排序集合 四.循环打印对象 五.根据条件修改 六.排序 七.求和 八.统计方法 九.材料 一.常用循环 public cla ...

  10. java 函数式接口与lambda表达式的关系

    函数式接口与lambda表达式的关系 在java中,lambda表达式与函数式接口是不可分割的,都是结合起来使用的. 对于函数式接口,我们可以理解为只有一个抽象方法的接口,除此之外它和别的接口相比并没 ...

最新文章

  1. 计算机组装人员的职责,自控设备组装员
  2. key php 转小写_PHP代码层防护与绕过
  3. 这5家纳米技术公司正在推动医疗检测的变革
  4. 学习XHTML的强烈欲望、!
  5. WinForm窗体间如何传值
  6. 关于redo(二)插入更新数据时的效率比较
  7. 传统网站与营销型网站区别盘比
  8. python怎么解释语言_python属于解释语言吗
  9. js 用下标获取map值_js map方法处理返回数据,获取指定数据简写方法
  10. maven项目发布到tomcat后没有lib目录解决方案
  11. typescript 与 js 开发 react 的区别
  12. 用java语言求老汉卖西瓜程序_Java编程练习题
  13. 软考-中级-网络工程师-知识点个人总结(一)
  14. 旋转变换(二)欧拉角
  15. 应用程序正常初始化(0xc0150002)失败。请单击“确定”,终止应用程序
  16. 政府采购法律法规百题知识竞赛试题CSDN
  17. c还是java(雨思版)
  18. PacketTrace基本使用
  19. 力扣 378. 有序矩阵中第 K 小的元素
  20. 今天测试了两个跑步软件

热门文章

  1. PMP培训机构哪家好,求推荐?
  2. 越狱后显示网络无法连接服务器,苹果手机:iOS12 越狱后 Cydia 无法联网闪退等问题汇总...
  3. JMeter下载及使用
  4. jmeter下载文件
  5. 双十一报告:服饰企业借助团队管理工具飞项高效协作
  6. Java词法分析器的设计与实现
  7. java集成kettle教程(附示例代码)
  8. nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!...
  9. 数说海南——简单分析海南各市县近六年人口吸引力情况
  10. 计算机二级考试vb内容,计算机二级VB考试考什么内容?(一)