美文网首页
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