首页 > 其他分享 >Lambda表达式

Lambda表达式

时间:2023-11-08 10:11:59浏览次数:18  
标签:接口 集合 Lambda 方法 表达式 lambda

一、简介

       Lambda表达式是JDK8的一个新特性,可以取代大部分的匿名内部类,更优雅的写出代码,特别是在集合的遍历和其他集合操作中,可以极大的优化代码结构。

二、接口要求

       Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法。

三、基础语法

       语法形式为 () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)。       

        

 四、常用示例

         4.1、方法归属者:: 方法名

                 静态方法的归属者为类名,普通方法归属者为对象

                  

       4.2、构造方法的引用

               一般我们需要声明接口,该接口作为对象的生成器,通过 类名::new 的方式来实例化对象,然后调用方法返回对象。

                

     4.3、创建线程

              我们以往都是通过创建 Thread 对象,然后通过匿名内部类重写 run() 方法,一提到匿名内部类我们就应该想到可以使用 lambda 表达式来简化线程的创建过程。

              

     4.4、遍历集合

           我们可以调用集合的public void forEach(Consumer<? super E> action) 方法,通过 lambda 表达式的方式遍历集合中的元素。以下是 Consumer 接口的方法以及遍历集合的操作。Consumer 接口是 jdk 为我们提供的一个函数式接口。        

                  

           

     4.5、删除集合中的元素

          我们通过public boolean removeIf(Predicate<? super E> filter)方法来删除集合中的某个元素,Predicate 也是 jdk 为我们提供的一个函数式接口,可以简化程序的编写。       

           

     4.6、集合内元素的排序

           在以前我们若要为集合内的元素排序,就必须调用 sort 方法,传入比较器匿名内部类重写 compare 方法,我们现在可以使用 lambda 表达式来简化代码。

           

   4.7、闭包问题

           这个问题我们在匿名内部类中也会存在,如果我们把注释放开会报错,告诉我 num 值是 final 不能被改变。这里我们虽然没有标识 num 类型为 final,但是在编译期间虚拟机会帮我们加上 final 修饰关键字。          

           

 

标签:接口,集合,Lambda,方法,表达式,lambda
From: https://www.cnblogs.com/xiaobaicai12138/p/17816704.html

相关文章

  • 正则表达式
    概念:正则表达式是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。这些模式被用于RegExp的exec和test方法,以及String的match、matchAll、replace、search和split方法。创建正则表达式两种方法:字面量方式,构造函数方式//字面量方式,其由包含......
  • 正则表达式-r'\[.*\]'和r'[.*]'的区别
    则表达式r'[.*]'实际上会匹配包含任何一个字符*或.或*的字符串。这不是想要的结果。希望匹配方括号[]中的任意字符,并且要匹配多个字符。要匹配方括号[]中的任意字符,并匹配多个字符,你应该使用r'\[.*\]',其中\[匹配左方括号,.*匹配任意字符(包括数字、字母等等),然后\]......
  • lambda表达式与流处理(三)
    14.3流处理流处理有点类似数据库的SQL语句,可以执行非常复杂的过滤、映射、查找和收集功能,并且代码量很少。1.流处理的接口都定义在java.uil.stream包下。BaseStream接口是最基础的接口,但最常用的是BaseStream接口的一个子接口——Stream接口,基本上绝大多数的流处理都是在Strea......
  • C++ lambda函数总结
    C++lambda函数1lambda函数简介名称lambda来自lambdacalculus(lambda演算),一种定义和应用函数的数学系统。这个系统中可以使用匿名函数,对于接收函数指针或伪函数的函数,可以使用匿名函数定义(lambda)作为其参数。1.1为什么使用lambda函数?距离:定义位于使用的地方附近很有用,由于......
  • lambda表达式与流处理(一)
    14.1.1lambda表达式简介1.lambda表达式用来表示匿名函数,也就是没有函数名字的函数。流处理是Java程序中一种重要的数据处理手动,它用少量的代码便可以执行复杂的数据过滤、映射、查找和收集等功能。2.lambda表达式可以用非常少的代码实现抽象方法。lambda表达式不能独立执行,因......
  • 正则可视化在线工具-更直观地理解和调试正则表达式的利器
    在工作和学习中,正则表达式是一种强大的工具,用于处理和分析文本数据。它可以帮助我们在海量数据中快速搜索、匹配和提取所需的信息。然而,正则表达式的语法复杂,很多人在编写和调试时可能会遇到困难。为了解决这个问题,我决定自己编写一个正则工具。这个工具旨在提供一个直观且用户友......
  • 正则表达式
    密码格式^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,20}$//密码格式,需包含大写字母、小写字母、数字、特殊字符@#$%^&*()_+|~-=\\`{}[]:\";'<>?,./)@Pattern(regexp="^(?![A-Za-z]+$)(?![A-Z\\d]+$)(?![A-Z\\W]+$)......
  • Understanding RegEx with Notepad++ 正则表达式
    Searchingastringusingthe‘Find‘or‘Find&Replace‘functionintexteditorshighlightstherelevantmatch(e.g.searching‘le‘highlightsitinsidewordssuchas‘apple‘,‘please’etc).However,someadvancededitorssuchasNotepad++(Imention......
  • uni app 的ui插件uview里自带的一些正则表达式
    uniapp的ui插件uview里自带的一些正则表达式取自"uni_modules\uview-ui\libs\function\test.js"  /***验证电子邮箱格式*/functionemail(value){return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value)}/***......
  • Javascript中表达式 "2"+3+4 的值为 "234"
    是左关联,表达式相当于("2"+3)+4根据ES5规范11,6,1节,如果某个操作数是字符串或者能够通过以下步骤转换为字符串的话,+将进行拼接操作。数字+字符串=>(数字).toString()+字符串如:1+'2'=12数字-字符串=>数字-Number(字符串)如:1-'2'=-1+是左连接......