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

  1. java sortedlist 固定容量_Java8 使用 stream().sorted()对List集合进行排序的操作

    1.声明一个测试对象 import java.time.LocalDate; import java.util.List; import lombok.Data; @Data public class ...

  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 lambda 排序_Java8特性:Lambda表达式之概念篇

    Java自诞生已经有十几个年头了,目前也已经发布了第十三个大版本,其中Java8是常用的版本中最新的一个版本.而Java8最大的特性就是:Lambda表达式.函数式接口和Stream流. 本篇我只介绍 ...

  6. Java中lambda表达式去重_JAVA8中Lambda和Stream

    Java8于2014年3月份发布,其主要更新的特性有:函数式接口.Lambda 表达式.集合的流式操作.注解的更新.安全性的增强.IO\NIO 的改进.完善的全球化功能等,本文将介绍Lambda表达式 ...

  7. java 8 lambda sort_java8新特性:Lambda表达式ArrayList排序

    java8新特性有很多,这里先对Lambda表达式进行简单的ArrayList排序体验,首先要使用java1.8,必须要先在myeclipse或者eclipse中装jdk1.8才行,需要注意的一点是, ...

  8. java 8 lambda reduce_JDK8新特性Lambda表达式体验

    "Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstra ...

  9. 【Java】反射、枚举、Lambda表达式

    一.反射 1 定义 2 用途(了解) 3 反射基本信息 4 反射相关的类(重要) 4.1 Class类(反射机制的起源 ) 4.1.1 Class类中的相关方法(方法的使用方法在后边的示例当中) 4. ...

最新文章

  1. php实现socket
  2. 所有受限制的应用程序包_【译】使用Blazor构建桌面应用
  3. Java黑皮书课后题第5章:**5.33(完全数)如果一个正整数等于除它它本身外其他所有除数之和。就称之为完全数。如6是第一个完全数,因为6=1+2+3。10000以下的完全数有4个,编写程序找出
  4. mysql delimiter的作用_MySQL数据库中delimiter的作用概述
  5. 监视和调整Linux网络协议栈:接收数据
  6. c语言空白字符的aci,c语言的保留字符有32个是那些啊???代表什么于是啊??...
  7. MOSS搜索的爬网错误【访问被拒绝。请验证默认内容访问账户是否有权访问此库】...
  8. 如何卸载mysql server 2005_彻底的卸载SQL Server2005
  9. go Test Benchmark 性能测试
  10. 赛迪中国ECM市场报告解读一:市场需求在2023年将达到275亿元
  11. 如何设置Word自动检查语法错误
  12. Vue中使用地图平台MapboxGL
  13. 自然语言处理面试基础
  14. Robot Framework(3)——RIDE工具详解
  15. 基于Arduino的显示测量环境数据设计
  16. Vue已知文件地址完成图片视频单个下载及批量下载
  17. Windows下设置护眼模式
  18. 全网最直接简单。百度富文本跨域上传文件到文件服务器
  19. (180页PPT)|清华大学孙富春教授深度讲解: 人工智能技术与产业发展
  20. php smarty使用,php-smarty模板使用教程(二)

热门文章

  1. 为什么任何对象都可以实现锁
  2. MyBatis创建SqlSession-怎么拿到一个SqlSessionTemplate?
  3. MyBatis 源码解读-settingsAsProperties()
  4. webpack打包js文件
  5. hystrix之熔断
  6. 数据库-优化-数据库可以从哪几方面进行优化
  7. 全局变量-基本代码演练
  8. python 消息队列、异步分布式
  9. 201209阶段二FFmpeg转码
  10. 【SpringBoot零基础案例06】【IEDA 2021.1】多环境下.properties配置文件的使用