Lambda表达式小结

 

Lambda 表达式应用

概述

Java中的Lambda表达式是JDK8中的一种新特性,它允许我们将一段代码(这段代码可以理解为一个接口的实现)当成参数传递给某个方法,然后进行业务处理,这种方式更像是一种函数式编程风格,可以让代码结构更简洁,开发效率更高。

应用场景

Java中的Lambda为JAVA编程注入了函数式编程思想,在迭代操作,映射操作,聚合操作等很多方面的实现上做出了很大努力。并从语法角度简化了程序员对特定代码的编写,通过底层的类型推断,方法引用等特性让代码表现的更加优雅。现在已成为我们编程过程中常用的一种编程方式。

快速入门分析

最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成,例如:

Arrays.asList( "a", "b", "d" ).forEach( 
e -> System.out.println( e ) 
);

在上面这个代码中的参数e的类型是由编译器推理得出的,你也可以显式指定该参数的类型,例如:

Arrays.asList( "a", "b", "d" )      .forEach( ( String e ) -> System.out.println( e ) );

如果Lambda表达式需要更复杂的语句块,则可以使用花括号将该语句块括起来,类似于Java中的函数体,例如:

Arrays.asList( "a", "b", "d" ).forEach( e -> {        System.out.print( e );       } );

lambda 表达式可以让代码编写更加简洁。我们先来思考下普通的函数或方法具备的几个元素:

  • 访问修饰符

  • 返回值类型

  • 方法名

  • 参数列表

  • 代码块

在lambda 表达式应用过程中,你应该也注意到了,一般只有两个元素:

(parameter list) -> body

其中“->” 将参数列表与函数主体分离,旨在对给定参数进行处理。函数的主体

可能是一条或多条语句。例如其常见结构如下:

() -> statement arg -> statement  (arg1, arg2, ...) -> {  body-block } (Type1 arg1, Type2 arg2, ...) -> { method-body-block;return value; }

Lambda表达式有返回值,返回值的类型也由编译器推理得出。如果

Lambda表达式中的语句块只有一行,则可以不用使用return语句,下列两个代码片段效果相同:

Arrays.asList( "a", "b", "d" )      .sort( ( e1, e2 ) -> e1.compareTo( e2 ) );

Arrays.asList( "a", "b", "d" ).sort(     ( e1, e2 ) -> {       int result = e1.compareTo( e2 );           return result;   } );

应用案例增强分析及实现?

结合对象lambda表达式基本语法的认识,分析如下案例:

简化线程对象创建

 构建一个线程对象,执行Runnable类型的任务,传统方式的实现,其关键代码如下:

  new Thread(new Runnable() {      @Override      public void run() {        System.out.println("hello");      }  }).start();

基于JDK8中的Lambda表达式实现方式,对传统方式线程对象的创建进行简化

,其关键代码如下:

  new Thread(()->{
    System.out.println("hello");
  }).start();

简化排序操作的实现

定义一字符串数组,然后对字符串数组中的内容,按字符串元素的长度对其进行排序。代码如下:

String[] strArray= {"abcd","ab","abc"};

在JDK8之前传统的实现方案,基于Arrays类对数组中的元素进行排序操作,关

键代码实现如下: 

Arrays.sort(strArray,new Comparator<String>() {
      @Override
      public int compare(String o1, String o2) {
        return o1.length()-o2.length();
      }
    });

基于JDK8中的Lambda表达式,对排序如上排序方案的代码实现过程进行简化

,关键代码如下:

Arrays.sort(strArray, (s1, s2) -> s1.length() - s2.length());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值