美文网首页
lambda表达式

lambda表达式

作者: 成虫_62d0 | 来源:发表于2017-11-03 21:38 被阅读0次

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

相关文章

网友评论

      本文标题:lambda表达式

      本文链接:https://www.haomeiwen.com/subject/bjexmxtx.html