文档章节

java 8 lambda表达式

 大胖和二胖
发布于 2016/10/12 17:54
字数 235
阅读 7
收藏 1

我们不需要任何枯燥的说明式的东西,直接上代码,我们看一下lambda究竟能够干些什么?

例子1,遍历一个list:

// before java 8
for (String s : lst){
    System.out.println(s);
}

//java 8
lst.forEach(s -> System.out.println(s));

例子2,实现接口:

Thread thread1 = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("before java 8");
    }
});

Thread thread2 = new Thread(() -> System.out.println("in java 8"));

例子3,function interface:

public static void main(String[] args){
    List<Integer> lst = Arrays.asList(0,1,2,3,4,5,6,7,8,9);
    pickInt(lst, (i) ->( i % 2 == 0));
    System.out.println();
    pickInt(lst, (i) ->( i > 3));
    System.out.println();
    pickInt(lst, (i) ->( i <= 3));
}

public static void pickInt(List<Integer> lst, Predicate<Integer> condition){
    for (int i : lst){
        if (condition.test(i)){
            System.out.print(i);
        }
    }
}

java 8当中多了一个package,java.util.function,当中提供了大量的function interface,为我们更好地使用lambda表达式,提供了丰富的接口支持。后续,我们会有一篇专门的文章来介绍function interface的使用。

总结:lambda表达式的引入,是java向函数式编程迈进的一小步。

© 著作权归作者所有

粉丝 23
博文 69
码字总数 50842
作品 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
Java8 Lambda【简】

Java8 Lambda Lambda是一个表达式,也可以说它是一个匿名函数。然而在使用它或是阅读Lambda代码的时候,却显得并不那么容易。因为它匿名,因为它删减了一些必要的说明信息(比如方法名)。 ...

anlve
2018/03/08
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
02、Java的lambda表达式和JavaScript的箭头函数

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

weir_will
2018/06/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0.01-Win10安装linux子系统

一、安装Debian子系统 -1、控制面板设置: -1.1、打开“控制面板” —— “程序” —— “启用或关闭Windows功能” —— 勾选 “适用于Linux的Windows子系统” -2、设置: -2.1、打开“设置”...

静以修身2025
昨天
0
0
init 0-6 (启动级别:init 0,1,2,3,4,5,6)

启动级别: init 0,1,2,3,4,5,6 这是个很久的知识点了,只是自己一直都迷迷糊糊的,今天在翻出来好好理解下。。 0: 停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system...

圣洁之子
昨天
2
0
Android Camera HAL浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转...

天王盖地虎626
昨天
2
0
聊聊Elasticsearch的ProcessProbe

序 本文主要研究一下Elasticsearch的ProcessProbe ProcessProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/process/ProcessProbe.java public class ProcessProb......

go4it
昨天
2
0
mysql PL(procedure language)流程控制语句

在MySQL中,常见的过程式SQL语句可以用在存储体中。其中包括IF语句、CASE语句、LOOP语句、WHILE语句、ITERATE语句和LEAVE语句,它们可以进行流程控制。 IF语句相当于Java中的if()...else if(...

edison_kwok
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部