文档章节

java 8 复合Lambda 表达式

C
 Canaan_
发布于 07/20 23:59
字数 216
阅读 18
收藏 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
粉丝 16
博文 265
码字总数 111702
作品 0
福州
行为参数化与lambda表达式 - 读《Java 8实战》

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

yysue
08/12
0
0
Lambda 表达式有何用处?如何使用?(针对Java8)

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

亭子happy
06/06
0
0
Java 8 的 lambda 表达式

Java 8 预计将在 2013 年发布,Java 8 将支持 Lambda 功能,尽管该规范还在不断的变化,但是 Java 8 的开发版已经实现了对 lambda 的支持。 关于 lambda 表达式的定义请看维基百科。 该文章将...

zhangfei_kr
06/26
0
0
02、Java的lambda表达式和JavaScript的箭头函数

[toc] 前言 在JDK8和ES6的语言发展中,在Java的lambda表达式和JavaScript的箭头函数这两者有着千丝万缕的联系;本次试图通过这篇文章弄懂上面的两个“语法糖”。 简介 Lambda 表达式来源于 ...

weir_will
06/14
0
0
Java 8 新特性,Lambda,方法引用,Stream,Optional

在C++、Python等语言里都有Lambda表达式,Java 8也新增了这一特性。 在java给变量赋值是这样的: 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一...

saulc
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

困扰当前数据中心管理的三大难题

导读 当企业发展到一定程度,或者之前的机房不能满足现在的数据中心使用时,企业会对数据中心进行迁移。那么在数据中心进行迁移的时候会遇到哪些风险呢?针对这些风险我们应该做出怎样的措施来...

问题终结者
16分钟前
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
32分钟前
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
40分钟前
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
47分钟前
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
55分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部