文档章节

java 8 复合Lambda 表达式

C
 Canaan_
发布于 2018/07/20 23:59
字数 216
阅读 38
收藏 0

comparator  比较器复合

//排序

Comparator.comparing(Apple::getWeight);
List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c"))
        .collect(Collectors.toList());

list.sort(Comparator.comparing(Apple::getWeight));  //按重量排序

list.stream()
        .sorted(Comparator.comparing(Apple::getName))
        .collect(Collectors.toList());

//先按重量倒序,如果重量一样,再按名称排序
list.sort(Comparator.comparing(Apple::getWeight)
        .reversed()
        .thenComparing(Apple::getName));

 

Predicate 谓词 复合

//判断是苹果b
Predicate<Apple> isBApple = apple -> Objects.equals("b", apple.getName());

isBApple.negate();      //不是苹果b


//不是苹果b,并且苹果重量大于1  -->  apple.name != "b" && apple.weight > 1
isBApple.negate().and(apple -> apple.getWeight() > 1);

// ((apple.name != "b") && apple.weight > 1)  or apple.weight==0
isBApple.negate()
        .and(apple -> apple.getWeight() > 1)
        .or(apple -> apple.getWeight()==0);

Function 函数复合

//f(x) = x+1
Function<Integer, Integer> f = x -> x + 1;
//g(x) = x*2
Function<Integer, Integer> g = x -> x * 2;
// g(f(x))
Function<Integer, Integer> h = f.andThen(g);
// f(g(x))
Function<Integer, Integer> z = f.compose(g);

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
C
粉丝 17
博文 314
码字总数 135202
作品 0
福州
私信 提问
Java 8 vs. Scala:Part I

比较 Java 8 和 Scala 在使用 Stream API 时的表达方式和性能的差异。 经过漫长的等待,终于等到了有着高阶函数的 Java 8。我迷恋 Java,但是我必须承认和现在一些其它的语言相比 Java 的语法...

oschina
2015/11/13
6K
64
Lambda 表达式有何用处?如何使用?(针对Java8)

什么是Lambda? 我们知道,对于一个Java变量,我们可以赋给其一个“值”。 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的J...

亭子happy
2018/06/06
0
0
行为参数化与lambda表达式 - 读《Java 8实战》

零、 概述 第一部分:1~3章 主要讲了行为参数化和Lambda表达式 第二部分:4~7章 主要讲了流的应用,包括流与集合差异,流的操作,收集器,注的并行执行 第三部分:8~12章 主要讲了怎样用Jav...

yysue
2018/08/12
0
0
Retrolambda —— 让Java7支持Lambda表达式

Retrolambda 是一个 Java 类库,在 Java 5、6、7 上实现 Java 8 的 Lambda 表达式的功能。你可以通过 Retrolambda 让使用 Lambda 表达式的 Java 8 代码运行在 Java 7 或更低版本上。...

oschina
2013/07/27
3
0
了解一下Java 8 (一)

2015年公司发展迅速,于是大量的时间花费在招聘上。招聘工程师,必然需要了解候选人的技术能力,尤其是对自己使用的技术的了解程度。优秀的工程师都需要知其然,也知其所以然,否则遇到技术难...

TalkingData
2016/01/20
1K
8

没有更多内容

加载失败,请刷新页面

加载更多

Spark in action on Kubernetes - Playground搭建与架构浅析

前言 Spark是非常流行的大数据处理引擎,数据科学家们使用Spark以及相关生态的大数据套件完成了大量又丰富场景的数据分析与挖掘。Spark目前已经逐渐成为了业界在数据处理领域的行业标准。但是...

阿里云官方博客
13分钟前
1
0
小白大数据学习路线

学习大数据首先了解大数据技术得板块划分: 数据计算(离线计算):Hadoop、spark 数据计算(实时计算):storm、spartstreaming、flink 其他框架:zookeeper 数据采集:flume、Kafka 数据存...

董黎明
26分钟前
0
0
mariadb 内存占用优化

本文由云+社区发表 作者:工程师小熊 摘要:我们在使用mariadb的时候发现有时候不能启动起来,在使用过程中mariadb占用的内存很大,在这里学习下mariadb与内存相关的配置项,对mariadb进行调...

腾讯云加社区
今天
3
0
spring security 自定义登录认证

spring security 自定义认证登录 1.概要 1.1.简介 spring security是一种基于 Spring AOP 和 Servlet 过滤器的安全框架,以此来管理权限认证等。 1.2.spring security 自定义认证流程 1)认证...

EasyProgramming
今天
1
0
Win下Jenkins-2.138源码编译及填坑笔记

源码编译篇 1、 安装JDK1.8-181,操作系统添加JDK环境变量。Java -version验证一下。 注:Jenkins2.138版本,JDK必须jkd1.8.0-101以上,不支持Java9,Maven必须3.5.3以上。 2、 解压Maven3....

编程SHA
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部