lambda表达式

Lambda Quick Start笔记

背景

匿名内部类

在java中,如果某些功能实现只在程序中使用一次,那么一般就用匿名内部类来实现。例如在android中view的事件绑定。

而且匿名内部类会引用其外部类的对象,这样就容易造成内存泄露。

另外,匿名内部类看起来很繁杂,不优雅。

但是在java中,使用方法接口(functional interfaces)匿名内部类是一种通行的模式。如Runnable Comparator也是这种方式。现在这些都可以用lambda表达式来替换实现。

Lambda Expression Syntax

Argument List Arrow Tocken Body
(int x,inty) -> x + y

常用使用场景

  • 变量声明
  • 赋值
  • 返回语句
  • 数组初始化
  • 方法或构造函数参数
  • lambda表达式体
  • 条件判断
  • 转型语句

用lambda表达式改善代码

lambda表达式对“Don't Repeat Yourself”原则提供了更好的支持,使得我们的代码更简洁,可读性更高

一个常见的条件过滤用例

一个常见的用例就是从一个集合中找出符合某特定条件的子集。

下面这个例子我们需要在美国分出三个组的人:

  • Drivers 年龄大于16岁
  • Draftee 18-25岁的男性
  • pilots 23-65

代码

https://github.com/nanhuaqq/LambdaLearn

java.util.function包介绍

Predicate不是java8提供的唯一功能接口,除了它还有如下功能接口

  • Predicate 携带一个属性 并把自己作为参数 传递给调用者。
  • Consumer 执行一个行为 并把自己作为参数 传递给调用者。
  • Function 转型行为 ,把T转变成U
  • Supplier 提供实例 类似工厂
  • UnaryOperator 一元操作 T -> T
  • BinaryOperator 二元操作 (T,T)->T

Lambda Expressions and Collections

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明:本文翻译自The Java™ Tutorials(官方文档) 简述 匿名类有一个问题,如果匿名类的实现非常简...
    猴子小皮球阅读 10,195评论 0 9
  • 简介 概念 Lambda 表达式可以理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主...
    刘涤生阅读 8,445评论 5 18
  • 原文链接: Lambdas 原文作者: shekhargulati 译者: leege100 lambda表达式是...
    忽来阅读 11,642评论 8 129
  • 当生活过得和你原来想的一样,当生活陷入低谷,当每件事都不顺你心的时候,当你不知道明天能干什么的时候,当生活...
    镶钻白骨精阅读 3,379评论 0 0
  • 最近进入了新的学习环境,很想潜心学习之中,但却很难静下心来。希望可以加油变更好
    Cassielj阅读 1,886评论 0 0

友情链接更多精彩内容