ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Lambda表达式小结

2022-02-01 18:01:57  阅读:156  来源: 互联网

标签:Arrays 代码 System 表达式 小结 asList 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());

标签:Arrays,代码,System,表达式,小结,asList,Lambda
来源: https://blog.csdn.net/weixin_63835553/article/details/122764979

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有