java 1.8支持了lambda表达式。它可以让我们的代码更简洁。看下面一个列出/目录下所有.txt文件的例子:
在java1.6,我们会写出这样的代码:
File f = new File("/");
String[] arr = f.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
java 1.8支持了lambda表达式后,我们就可以这样写了:
File f = new File("/");
String[] arr = f.list((dir, name) -> name.endsWith(".txt"));
7行代码减到2行,是不是简洁了很多
我们来分析一下(dir, name) -> name.endsWith(".txt")这一段。
(dir,name)这里写的是输入参数。对应:accept(File dir, String name) 。因为编译器可以推荐出dir和name的类型,所以在这时不用再一次声明它的类型。
-> 是分隔符,表明后面跟的是具体的逻辑主体。这里只有一行代码,所以可以不用{}。如果有多行代码,可以这样写:
File f = new File("/");
String[] arr = f.list((dir, name) -> {
System.out.println(name);
//do something
return name.endsWith(".txt");
});
同样的道理我们也可以写出下面这样的代码:
Thread t = new Thread(() -> {
int a=123;
System.out.println("test " + a);
});
t.start();
只要某个接口只有一个抽象方法,我们就可以用lambda表达式的方式来简化我们的代码。
参考文档:
http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
http://www.iteye.com/magazines/129-Java-8-Tutorial
分享到:
相关推荐
java8-lambda表达式的基础使用.pdf
668.666.JAVA基础教程_动态代理与Java8新特性-Lambda表达式使用举例(668).rar
669.667.JAVA基础教程_动态代理与Java8新特性-Lambda表达式语法的使用(669).rar
670.668.JAVA基础教程_动态代理与Java8新特性-Lambda表达式语法的使用(670).rar
JAVA 8 Lambda表达式-Lambda Expressions.rar
Java8发布到现在至少3年了,但是对Lambda表达式不熟悉、看不懂、不会用的现象非常常见。 即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是...
说明:本文档主要讲解java8中的Lambda表达式。内容完全基于java 8 tutorial,加上一些自己的注释与理解。使用代码本身来进行解释(这是java 8 tutorial中的风格),同时去掉一些无关紧要的知识点(比如泛型等),...
Java8的lambda表达式
主要内容: ● 为何需要lambda,...第2章 Java lambda表达式的基础知识 23 第3章 流与管道介绍 55 第4章 终止流:收集与汇聚 91 第5章 起始流:源与分割迭代器 135 第6章 流的性能 167 第7章 使用默认方法演化API 195
java8lambda表达式的安卓Studio工程Demo,供初步学习使用
java lambda表达式,lambda 表达式基本上表达了函数式接口的实例(具有单一抽象方法的接口称为函数式接口。一个例子是 java.lang.Runnable)。lambda 表达式实现了唯一的抽象函数,因此实现了函数式接口 lambda ...
Java8发布到现在至少3年了,但是对Lambda表达式不熟悉、看不懂、不会用的现象非常常见。 即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是...
java lambda 表达式中文详解(语言篇和类库篇),更方便更快捷了解java lambda表达式
NULL 博文链接:https://shmilyaw-hotmail-com.iteye.com/blog/2251821
lambda表达式是JAVA8中提供的一种新的特性,它支持Java也能进行简单的“函数式编程”。 下面这篇文章主要给大家介绍了关于Java8新特性Lambda表达式的一些复杂用法的相关资料,需要的朋友可以参考借鉴,下面来一起看...
4、函数式接口使用:学习如何使用Lambda表达式与Java中的函数式接口进行交互,包括传递函数、使用函数式接口的默认方法和方法引用。 本源码资源旨在帮助用户掌握以下几个方面: 1、Lambda表达式概述:了解Lambda...
视频地址:https://www.bilibili.com/video/BV1ut411g7E9 【Java8】Lambda表达式 和 Stream API 详解笔记 md文档
关于Java中lambda的表达式,Java多核编程,清华大学(出版)
Java8发布到现在至少3年了,但是对Lambda表达式不熟悉、看不懂、不会用的现象非常常见。 即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是...
Java8发布到现在至少3年了,但是对Lambda表达式不熟悉、看不懂、不会用的现象非常常见。 即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是...