Lambda 表达式

Lambda表达式是java 8 带来的革新.
Lambda 表达式让你能够将函数作为方法参数,或者将代码作为数据对待。
优点:在 Java 8 之前,匿名内部类,监听器和事件处理器的使用都显得很冗长,减少代码量,可读性增强, 发挥多核 CPU 的优势;
使用范围: 匿名内部类,监听器和事件处理器, 集合.
<h3>1.使用lambda表达式</h3>
要使用 Lambda 表达式,需要定义一个函数式接口, 如:
Function<T, R>:将 T 作为输入,返回 R 作为输出,他还包含了和其他函数组合的默认方法。
Predicate<T> :将 T 作为输入,返回一个布尔值作为输出,该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(与、或、非)。
Consumer<T> :将 T 作为输入,不返回任何内容,表示在单个参数上的操作。

上面的函数式接口是jdk 8里定义的,也可以自定义,定义一个接口,然后定义一个(只能一个)抽象方法.这个类就被识别成Functional Interface,当然最好在接口前加个标签@FunctionalInterface

@FunctionalInterface
public interface Functional<T>  {
    public void thefunction(T t);
}

<h3>2. lambda表达式</h3>
(Type t)->{ expression;}
由于可以识别Type 所以,可以简化成
(t)->{expression;}
如果只有一个变量,可以简化括号
t->{expression;}
如果只有一行语句,可以简化括号,去掉括号以后就不用加分号了
(t)->expression
例子:

Map<String,String> map…
map.forEach((String key,String value)
->{ System.out.println(key +" : "+value);}
);

简化成

map.forEach((key, value)
-> System.out.println(key +" : "+value)
);

还有一种写法
Type::Method
例子

i->System.out.println(i) 

也可以写成

System.out::println 

<h3>参考目录</h3>
Java 8 新特性概述
Oracle java 8

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java 8 lambda表达式示例 转自importNew 原文链接 例1、用lambda表达式实现Runnab...
    低至一折起阅读 5,148评论 0 3
  • 摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同...
    OneAPM阅读 6,220评论 0 26
  • 简介 概念 Lambda 表达式可以理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主...
    刘涤生阅读 8,426评论 5 18
  • 声明:本文翻译自The Java™ Tutorials(官方文档) 简述 匿名类有一个问题,如果匿名类的实现非常简...
    猴子小皮球阅读 10,178评论 0 9
  • 纤手黯貂蝉 温柔如星星般浪漫 星星遥不可攀 听着风望断 邂逅是烟花的灿烂 烟花眨眼暗淡 都说恋爱最怕勇敢 对对男女...
    海水未顶阅读 1,300评论 0 1