专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Lambda表达式详细总结,理论加案例

  满怀忧思,不如先干再说!通过学习,重新定义自己!JDK版本迭代
  近几年JDK更新速度非常快,2022年9月20号发布JDK19,作为Java语言的使用者,尤其是新入行和想要入行的朋友,不要被这么快的更新速度吓到,更不要被贩卖了焦虑,因为多数版本仅为过渡,如JDK19在2023年3月将会被JDK20替代,完全不必慌张,近几年JDK更新如此频繁,真正多的变化其实还在于JDK8之中。本文章为系列文章,后续内容持续推出!
  从1996年1月JDK1。0正式发布到现在,目前有三个主流的长期支持【LTS】版本为JDK8、JDK11、JDK17,因为JDK11并没有特别大的优化更新,46。45的企业还是使用2014年3月14号发布的JDK8,JDK17使用率仅在0。37
  JDK8重要更新
  继《JDK8更新官网原版详解》之后,本篇主要介绍一下JDK更新在编码层面的重要变化,也就是我们一线程序员需要掌握的都有哪些,网络上有许多教程,但恰恰是教程太多五花八门,不知所云,一个新特性怼六七个小时实属浪费时间,学无涯生也有涯,很多玩意我们知道就行不需要去掌握,不要去浪费时间,结合实际工作,我总结了如下几点:Lambda表达式:非常重要,一种新的编程语法,可简化代码,多数特性也基于该语法格式实现,Spring5源码也大量使用Lambda表达式,现阶段开发中大量使用函数式接口:接口中仅包含一个抽象方法的接口,Lambda表达式需要借助函数式接口实现Stream流:新增对数据的流式操作,不存储数据,仅用于数据计算,可以对集合、数组、文件等进行多重计算操作,开发简单,速度快接口增强:接口中可以提供默认方法方法引用:可以直接引用已有Java类和对象的方法或构造器,结合Lambda表达式使编程更紧凑简洁,减少冗余代码日期和时间类:全新日期时间API,设计合理,线程安全引入Optional:用来解决空指针异常
  小贴士:本篇文章主要讲解Lambda表达式Lambda表达式
  Lambda表达式支持将一个方法【行为】当做参数传递,这种编程方式称为【函数式编程】,这种编程方式最大的特点就是代码紧凑,减少冗余代码,让编程边的更加简洁,而Java最大的弊端就在于代码臃肿,在Python,Scala、JavaScript等语言中也都引入函数式编程,而Java通过Lambda表达式实现函数式编程势在必行!语法格式
  Lembda表达式通过左侧的参数,右侧的表达式和中间的右箭头组成:参数可以为空可以没有返回值有参有返回值(parameter1,parameter12,。。。){expression;。。。returnxxx;}无参有返回值(){expression;。。。returnxxx;}有参无返回值(parameter1,parameter12,。。。){expression;。。。}无参无返回值(){expression;。。。}实现原理Lambda表达式也并不是想用就用,必须依赖于函数式接口才可使用函数式接口:即接口中只有一个抽象法的接口,在JDK8及以后版本都会使用FunctionalInterface注解修饰类型推断:Lambda表达式无需指定参数类型,程序依然可以编译,Lambda表达式的类型依据上下文环境,由编译器推断出来参数类型,这就是类型推断重点掌握Lambda表达式实现前提理解函数式接口Lambda表达式实现语法和案例Lambda表达式简写Lambda对集合、线程等的操作练习无参实现
  Lambda表达式实现需要依赖于函数式接口,JDK内置了一些函数式接口,使用Supplier来实现无参Lambda讲解,至于函数式接口怎么自定义在后续单独介绍,保证连贯性,在此不穿插函数式接口其他内容!
  Supplier接口为JDK内置的供给型接口,特点为无参数但是有返回值,定义如下:
  代码:packagecom。stt;importjava。util。function。Supplier;无参函数式接口publicclassNoArgsMain{publicstaticvoidmain(String〔〕args){1、原始方式实现SupplierIntegers1newSupplierInteger(){OverridepublicIntegerget(){return1024;}};通过get方法获取返回值System。out。println(s1。get());2、通过Lambda表达是实现SupplierStrings2(){returnLambda实现;};通过get方法获取返回值System。out。println(s2。get());}}
  简化代码:
  如果Lambda表达式有返回值且代码体只有一行代码时,return和大括号可以省略不写1、简化后代码如下publicclassNoArgsMain{publicstaticvoidmain(String〔〕args){1、函数体只有一行代码,return可以省略2、只有一行代码大括号可以省略SupplierStrings2()Lambda实现;通过get方法获取返回值System。out。println(s2。get());}}2、如果有多行,则不可以省略publicclassNoArgsMain{publicstaticvoidmain(String〔〕args){通过Lambda表达是实现,因为函数体有其他代码,不可省略return和大括号SupplierStrings2(){System。out。println(我是Lambda表达式体);returnLambda实现;};通过get方法获取返回值System。out。println(s2。get());}}有参实现
  通过JDK内置Consumer接口实现,接收参数但没有返回值,定义如下:
  代码实现:packagecom。stt;importjava。util。function。Consumer;publicclassHasArgsMain{publicstaticvoidmain(String〔〕args){1、原始实现ConsumerIntegerconsumer1newConsumerInteger(){Overridepublicvoidaccept(Integerparam){没有返回值System。out。println(我是消费型接口,只进不出哦!param);}};调用accpet方法消费数据consumer1。accept(1024);2、Lambda写法,ConsumerStringconsumer2(str){System。out。println(我是Lambda消费型接口,str);};consumer2。accept(石添添);}}
  简化写法:publicclassHasArgsMain{publicstaticvoidmain(String〔〕args){1、如果只有一个参数则可以省略小括号2、代码体只有一行代码则可以省略大括号ConsumerStringconsumer2strSystem。out。println(我是Lambda消费型接口,str);consumer2。accept(石添添);}}
  总结:如果代码体只有一行代码,无论有无参数,大括号都可省略如果有返回值,代码体只有一行代码则return可以省略如果有且仅有一个参数,参数的小括号可以省略,没有参数和有多个参数都不可省略、
  有没有那么一点点感觉,Lambda表达式简化了代码,让编码更加简洁,接下来我们通过更多案例对比进一步理解和使用Lambda表达式Lambda实现线程创建
  通过Runnable接口创建线程,如果想使用Lambda那么Runnable应该是一个函数式接口,函数式接口的特点是只有一个抽象方法,Runnable接口定义如下:
  代码实现:publicclassThreadMain{publicstaticvoidmain(String〔〕args){1、原始方式创建线程newThread(newRunnable(){Overridepublicvoidrun(){System。out。println(Thread。currentThread()。getName()线程启动);}})。start();2、使用Lambda表达式简写方式创建线程newThread(()System。out。println(Thread。currentThread()。getName()线程启动))。start();}}Lambda实现集合遍历
  集合操作新增forEach方法,接收一个Consumer类型对象,上边【有参实现】中介绍了,它是一个函数式接口
  代码实现:publicclassCollectionMain{publicstaticvoidmain(String〔〕args){创建集合ListStringlistnewArrayList();添加数据list。add(艾斯!);list。add(赛罗!);list。add(杰克!);list。add(雷欧!);1、原始遍历方式list。forEach(newConsumerString(){Overridepublicvoidaccept(Strings){System。out。println(s);}});2、因为Consumer是一个函数式接口,可以使用Lambad思考:简写形式怎么实现呢?list。forEach((str){System。out。println(str);});}}Lambda实现集合排序
  集合排序可以使用sort方法,sort方法接收一个Comparator类型数据
  Comparator接口定义
  小贴士:该接口中还有几个默认实现方法和静态方法,因为只有一个抽象方法所以也是函数式接口
  代码实现:publicclassCollectionSortMain{publicstaticvoidmain(String〔〕args){ListPersonpersonListnewArrayList();personList。add(newPerson(李小白,24));personList。add(newPerson(张二三,21));personList。add(newPerson(王五六,30));遍历System。out。println(排序前);personList。forEach(personSystem。out。println(person));排序,参数1参数2为升序排序System。out。println(排序后);personList。sort(newComparatorPerson(){Overridepublicintcompare(Personp1,Personp2){returnp1。getAge()p2。getAge();}});personList。forEach(personSystem。out。println(person));Lambda排序,参数2参数1为降序排序System。out。println(Lambda排序);直接简写形式,只有一行代码,大括号和return可以省略personList。sort((p1,p2)p2。getAge()p1。getAge());personList。forEach(personSystem。out。println(person));}}总结Lambda表达式简化开发,使编码变的简洁Lambda表达式需要依赖函数式接口实现,一定情况下可以简化写法StreamAPI、方法引用等特性需要基于Lambda实现Lambda表达式刚开始可能不习惯,多些就好,一定要多用哦
  后续将陆续推出其它新特性,记得关注哦!

沧州首富发家史辞职创业,年薪1820万,身家145亿不忘回报社会刘明辉01刘明辉,1963年出生在河北沧州,父母都是沧州一中的老师。刘明辉的父亲刘俊松是沧州一中的物理老师,也是当时一中校办厂的创始人之一,刘俊松对待学生和蔼可亲,对待工作认真负责唐山打人烧烤店开门,老板娘带员工一起清理地面,奋力擦掉血迹唐山烧烤店打人事件已经过去将近10天了,自从店里发生打人事件后,这家烧烤店也就成为舆论关注的焦点,店里老板娘是一位50多岁的老太太,在面对这场事件后她也感觉很无力,有网友认为老板娘唐山烧烤店打人事件首犯陈某志会否被判处死刑分析篇根据事件公布的信息数据死刑的概率不大中国刑法第48条规定,死刑只适用于罪行极其严重的犯罪分子。关于罪行极其严重,刑法未作明确规定,根据我国刑法理论界的一般观点,是主观罪过和客观危害唐山被打的女孩,剩余的三个女孩去哪里了?视频里面有个新发现距离唐山打人事件中现在已经过去10天了。可以现在除了住院的女孩有照片证明她还活着以外,其他三个女孩没有任何的消息,这三个女孩到底哪里去了?尤其是已经过去了10天,警方一直没有给出明从央视一哥到突然隐退,朱军这三年经历了什么?弦子爆出当天细节朱军可谓是一个时代的记忆,自朱军1997年首次登上舞台至今已有21年了。每年的春晚,朱军都没有错过。他在主持方面有丰富的工作经验,并具有卓越的专业技能。每年的元旦联欢会,他都会带给上海石化爆炸,总感觉哪儿地方不对劲看了网上发的上海石化爆炸视频及官方发的通报,总感觉哪儿地方不对劲,一时又说不清,捋一捋,大家看看是不是有点儿道理。图片来自网络,侵权联系删除。视频上显示起火点儿至少是三处,且相隔有摩根斯身为鸟鸟果实能力者却不会飞?一直保持人兽形是为了隐藏?他,眼线遍布各地甚至连CP0拍摄的照片都可以随意使用他,是路飞的坚定拥护者并且成功将路飞从第五皇奶成四皇他,是下一届普利策新闻奖的内定者他,就是世界经济新闻社的社长,人称大新闻摩根上海爆炸石化厂已燃烧几十小时,为何不灭火,保护性燃烧是什么?6月18日4时28分,位于上海金山区的中石化上海石化化工部乙二醇装置区域发生火情,事故不久后,逆行者们就驾驶着消防车到达现场开始救援,但这次不同在于,消防员并没有第一时间扑灭火焰,上海青帮创始人林桂生,辉煌时期一手遮天,后半生却孤独终老上海青帮创始人林桂生,辉煌时期一手遮天,后半生却孤独终老提起旧上海滩势力雄厚的青帮,许多人会首先想到以黄金荣,杜月笙,张啸林为首的青帮头目。在上世纪二三十年代,他们走私贩卖毒品开设马昕张文宏领衔上海大样本数据研究揭示奥密克戎重症进展率评估超强传播性的新冠奥密克戎病毒在不同人群中的重症率,有助于对疾病负担作出判断,这对于制定未来防疫策略至关重要。6月18日,中国疾病预防控制中心周报(CHINACDCWEEKLY)水果并非吃得越多越好,怀孕期间少贪嘴,否则自己遭罪还伤胎文好孕姐眼下正是荔枝上市的季节,作为有果中皇后美誉之称的水果,荔枝的美味绝对是令人欲罢不能的。这不,昨天的妈妈群里,就有小伙伴表示自己胃口不佳的时候,就会去买一兜荔枝回来当零食吃。
美国国税局泄露12万纳税人机密信息含姓名联系方式和财务信息海外网9月6日电据福克斯商业频道报道,美国国税局于当地时间2日承认,该机构日前在其官网上泄露了一份涉及约12万纳税人的机密信息。美国国税局声称,泄露纳税人机密信息是无意之举,发现这中信证券下调外汇存款准备金率释放稳定汇率信号e公司讯,中信证券研报指出,在近期人民币出现较快贬值的背景下,央行宣布下调外汇存款准备金2个百分点。这一措施可增加境内金融机构的美元流动性,释放了稳定汇率的信号。过去一段时间,央行人民币汇率破7概率多大?影响几何?粤开证券首席经济学家研究院院长罗志恒研究助理马家进摘要8月15日以来,人民币汇率经历了年内第二轮急贬,从横盘了近3个月的6。7快速贬至8月29日的6。92,距离破7仅一步之遥,引发工业互联网解决方案提供商TOP100我国工业互联网发展至今,产业规模超万亿大关,已在45个国民经济大类中得到应用,已经成为促进工业企业转型升级推动经济高质量发展的重要力量,工业互联网基于整个制造业产生的案例与背后的数二战德国进攻苏联的真正原因是什么?二战时期,德国在1941年6月22日执行了进攻苏联的巴巴罗萨计划,由此开始了4年左右的苏德战争。历史上无论是拿破仑还是希特勒,他们都曾经统一过欧洲大陆,他们也曾经在进攻英国和俄国(救命!新手妈妈一夜之间瘫痪在床,有这种情况的人要注意每个妈妈对自己刚出生的娃娃都饱含着所有的祝福和爱意!小齐也不例外,每次再累伤口再痛,看见自己宝宝可爱的小脸,窝在自己怀里的均匀呼吸,心里就涌起了满满的幸福感。明天就出月子啦,一关一硅料五虎二季报通威特变协鑫大全营收净利强劲在硅料供应紧平衡背景下,通威股份特变电工协鑫科技大全能源和合盛硅业等硅料五虎在第二季度业绩高歌猛进,均交出了不俗二季报答卷。其中,大全能源通威股份单季营收净利增幅均超过3位数,特变网商银行数字银行的数据智能之道进入数字经济的时代,数据智能被认为是金融机构推进数字化的重要引擎,也涌现了一些先行的探索者。由蚂蚁集团发起成立的网商银行就是其中一员,其开创的数据智能化运用模式,有效实现了网商银行俄使馆门口爆炸8死15伤!美远程轰炸机巡游中东,啥情况?欧佩克减产,油价应声大涨来看昨夜海外要闻点蓝字关注,不迷路当地时间周一,欧洲三大股指涨跌不一。德国DAX30指数显著下跌2。22,法国CAC40指数跌1。20,英国富时100指数涨0。09。因劳动节假期,周一美股休市。本3小时4亿,刘德华直播演唱会背后引发的社会数据真相一身白色西装,一条蓝色休闲裤,一双运动鞋,一头依然飘逸的黑发,没有任何一点点多余的装扮,反而没有一丝丝违和感。这就是刘德华刚刚的把我唱给你听的直播演唱会现场。从笨小孩开头,以17岁安徽建工半年报营收336亿元主要经营指标稳健增长8月25日晚间,安徽建工集团股份有限公司(公司代码600502,以下简称安徽建工或公司)发布了2022年半年报。根据报告显示,安徽建工2022年16月实现营业收入336。89亿元,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网