应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

两千字详解Java8中必知的4个函数式接口

  前言
  Java8中提供了许多函数式接口,包括Function、Consumer、Supplier、Predicate等等。这4个接口就是本篇将要分享的内容,它们都位于java。util。function包下。
  为什么需要知道这几个函数式接口?
  因为这4个函数式接口是Java8中新增的重要接口,同时Java8的Stream新特性,也有用到这些接口,所以学习它们可以帮助我们更好地理解Stream流。
  也正因为这是函数式接口,所以就可以使用Lambda表达式来写接口的实现逻辑。而且学习的过程中可以更好地理解函数式编程的思想。Function接口说明
  Function这个单词的意思就有函数的意思,就数学中的yf(x),接收一个x参数,通过函数f运算后,返回一个结果y。
  Function接口包含四个方法:apply(Tt):这是Function接口的主要方法,它接收一个参数并返回一个结果。同时它也是唯一的抽象的方法,剩下的都是有默认实现的(Java8中接口的抽象方法支持默认实现)。andThen(Functionafter):作用是将两个Function组合。首先执行当前函数,再执行andThen函数,并将当前函数的结果作为参数传递给andThen函数。compose(Functionbefore):同理,将两个Function组合,将先执行compose函数,再执行当前函数,并将compose函数的结果作为参数传递给当前函数。identity():返回一个执行恒等转换的函数,即返回输入参数本身。
  Function接口通常用于将一个类型的值转换为另一个类型的值。apply方法Function接口的泛型,第一个参数是入参类型,第二个参数是出参类型Function接口只有一个抽象方法,就是apply(),下面利用Lambda表达式实现这个抽象方法并创建Function对象FunctionInteger,StringfunctionnumGTAnum;将5这个参数传递给function,得到返回结果Stringresultfunction。apply(5);System。out。println(result);打印:GTA5复制代码andThen和compose方法定义两个Function对象进行相关转换操作FunctionString,StringupperCasess。toUpperCase();FunctionString,StringaddPostfixss5;链式调用,将gta这个字符串参数先传递upperCase这个函数进行操作,然后将得到的结果传递给addPostfix函数进行操作,得到返回结果StringstrupperCase。andThen(addPostfix)。apply(gta);System。out。println(str);打印:GTA5复制代码identify方法
  identity方法返回一个执行恒等转换的函数,该函数将输入参数原样返回。例如:FunctionString,StringidentityFunction。identity();Stringresultidentity。apply(hello);打印:hello复制代码Consumer接口说明
  Consumer这个单词的意思就有消费者的意思,就把入参消费了,并不会返回结果给你。
  Consumer接口包含两个方法:accept(Tt):该方法接受一个参数并执行一些操作。andThen(Consumerafter):同理,将两个Consumer组合,先后进行消费。accept方法
  Consumer接口通常用于消费一个参数然后执行一些操作。例如:Consumer接口,泛型参数是入参类型,接受一个参数,并不返回结果,相当于消费了这个参数ConsumerStringconsumersSystem。out。println(s);consumer。accept(我输入什么就打印什么);打印:我输入什么就打印什么复制代码andThen方法
  组合两个Consumer:ConsumerStringfirstsSystem。out。println(s5);ConsumerStringsecondsSystem。out。println(s6);先执行first这个Consumer,接着执行second这个ConsumerConsumerStringcombinationfirst。andThen(second);combination。accept(GTA);打印:GTA5GTA6复制代码Supplier接口
  Supplier接口只定义了一个get()方法,该方法不接受任何参数并返回一个结果。
  Supplier这个单词的意思就有供应者的意思,给我的感觉就是生产者,不用参数,直接生产一个东西给你。
  Supplier接口通常用于生成一个值。例如:Supplier接口,泛型参数是出参类型,不接受参数,但是会提供结果,相当于生产了某个东西SupplierStringsupplier()提供一个我随便打的字符串给调用方;Stringtextsupplier。get();System。out。println(text);打印:提供一个我随便打的字符串给调用方复制代码Predicate接口说明
  Predicate这个单词的意思就有预言,预测,谓语,谓词的意思,就是用来预测判断的。
  Predicate接口包含四个方法:test(Tt):该方法接受一个参数并返回一个布尔值。and(Predicateother):与另一个Predicate进行组合,实现逻辑与操作。negate():与另一个Predicate进行组合,实现逻辑非操作。or(Predicateother):与另一个Predicate进行组合,实现逻辑或操作。test方法
  Predicate接口通常用于测试一个条件是否成立。例如:Predicate接口,泛型参数是入参类型,返回布尔值PredicateStringpredicatess。contains(god23bin);booleanflagpredicate。test(god23bin能给你带来收获吗?);System。out。println(god23bin能给你带来收获吗?flag);打印:god23bin能给你带来收获吗?true复制代码and方法
  为了便于演示,这里准备两个Predicate:PredicateStringstartsWithA(str)str。startsWith(A);如果传入的字符串是A开头,则返回truePredicateStringendsWithZ(str)str。endsWith(Z);如果传入的字符串是Z结尾,则返回true复制代码
  使用and进行组合,与操作:PredicateStringstartsWithAAndEndsWithZstartsWithA。and(endsWithZ);System。out。println(startsWithAAndEndsWithZ。test(ABCDEFZ));trueSystem。out。println(startsWithAAndEndsWithZ。test(BCDEFGH));false复制代码negate方法
  使用negate进行组合,非操作:PredicateStringnotStartsWithAstartsWithA。negate();System。out。println(notStartsWithA。test(ABCDEF));falseSystem。out。println(notStartsWithA。test(BCDEFGH));true复制代码or方法
  使用or进行组合,或操作:PredicateStringstartsWithAOrEndsWithZstartsWithA。or(endsWithZ);System。out。println(startsWithAOrEndsWithZ。test(ABCDEF));trueSystem。out。println(startsWithAOrEndsWithZ。test(BCDEFGH));false复制代码那这些接口有什么应用呢?
  在Stream流中就有应用上这些函数式接口。当然,当你有相似的需求时,你自己也可以应用上这些接口。下面说下Stream流中的应用。
  Function接口:例如map方法,map方法就是将一个类型的值转换为另一个类型的值。map方法,将T类型的值转换成R类型的值R是返回的Stream流的元素类型,T是原先Stream流的元素类型RStreamRmap(Functionlt;?superT,?extendsRmapper);复制代码
  Consumer接口:例如forEach方法forEach方法,遍历Stream流中的元素,T类型是Stream流的元素类型voidforEach(Consumerlt;?superTaction);复制代码
  Supplier接口:例如generate方法生成一个无限长度的Stream流publicstaticTStreamTgenerate(SupplierTs){Objects。requireNonNull(s);returnStreamSupport。stream(newStreamSpliterators。InfiniteSupplyingSpliterator。OfRef(Long。MAXVALUE,s),false);}复制代码
  Predicate接口:例如filter方法,使用Predicate进行过滤操作。过滤出Stream流中,判断结果为true的元素StreamTfilter(Predicatelt;?superTpredicate);复制代码

用专业守护冬奥赛场让世界记住友善中国记北京冬奥会医疗保障中的新华社北京4月13日电题:用专业守护冬奥赛场让世界记住友善中国记北京冬奥会医疗保障中的北大医学人新华社记者魏梦佳无数次演练,争分夺秒救治,从寒冬到初春,从破晓到深夜……非洲足球太疯狂!0149你敢信?从绿色版萨拉赫到尼日利亚闹剧谈起非洲足球,有人会用混乱、疯狂、假球和荒诞来形容。因为无缘世界杯,尼日利亚球迷暴乱导致非洲足协官员死亡(官方后续报道称是死于心脏骤停)。相比之下,塞内加尔球迷用镭射灯将萨拉赫……明日大暑吃水果时节来了,记得做好这1件事,祛湿降暑平安度夏明日大暑,朋友们,终于可以吃西瓜了!多处淮乡得,天然碧玉团。破来肌体莹,嚼处齿牙寒。清敌炎威退,凉生酒量宽。东门无此种,雪片簇冰盘。《西瓜》宋顾逢西瓜甘寒,平……同样演曹操,8个版本差距明显,郭德纲就是来搞笑的鲍国安、濮存昕、张丰毅、陈建斌、姜文、周润发、于和伟,郭德纲这七位演员想必大家都非常熟悉,他们作品众多,演技精湛,都是非常优秀的演员。虽然各自都有经典的荧幕形象,但……湖人大胜雷霆终结8连败!8人上双赢下主场收官战詹姆斯笑容满面北京时间4月9日,湖人120101大胜雷霆,终结8连败,主场收官战收获胜利。詹姆斯、浓眉、威少、安东尼继续休战,斯坦利约翰逊得到21分,创赛季新高,湖人全队8人得分上双。湖人上……28万亿吨冰融化,可将全中国淹没2。9米,未来人类该何去何从28万亿吨的冰融化世界各国大力发展科技,对我们的生活而言,确实是带来了极大的便利。但是不可否认的是,科技的进步导致地球生态环境遭到了严重的破坏,人类过度使用化石能源,过度……央视一姐们的择偶两人嫁富商,一人嫁同行,一人嫁初恋当主持人,如果能入职中央电视台,那就是非常厉害的了。如果能获得央视一姐这个称号,更是凤毛麟角。央视一姐是一年一度的春晚主持人的御用人选。跨年夜的春晚,对于中国……为啥司机不愿意载川藏线的背包女?司机大叔上了车就有很多要求318川藏线起点在四川,终点到西藏,沿途拥有众多优美的景色,并且还有许许多多选择穷游的小伙伴。虽说穷游能够实现旅游价值,但是越来越多的穷游女,却将穷游变得让人们害怕,让众……颐和园开年大展揭幕230件传世美玉集中亮相新春将至,颐和园博物馆的展览又上新了!由商代至民国初年的230余件动植物题材玉器集中亮相,给广大市民游客带来一场东方美学盛宴。北京青年报记者了解到,玉见生机中国古代动植物题材玉……高管大震荡,阿里云四面楚歌作者童思思编辑胡展嘉出品零态LT(ID:LingTaiLT)内部确实没有对这次事件(阿里云高管变动)的口径,官方没有公开任何信息。关于这次高管变动消息,阿里云……胡金秋脾破裂手术,医生告诉你,什么是脾破裂,严不严重胡金秋在4月15日CBA半决赛对阵上海队的比赛中被对手撞伤左侧肋部导致脾破裂,随后做了急诊手术治疗。我们先来看看胡金秋受伤的过程,上海队的富兰克林争抢篮板后摔倒,正好头部……小米有品卖蛋,众筹上线前万人预订,如此火热原来别有洞天教大家怎么区分新老米粉,新米粉一般只知道小米手机和小米的智能家居。而我们这些old米粉,除了小米产品外一定还认识小米有品,因为这个平台上面不仅有小米自家的东西,还有很多和小米一……
王鸥新恋情再添锤,和何九华一起出席妹妹婚礼,被拍肚子疑似怀孕看了那么多离婚的瓜,终于有一个喜讯到来了。近日有网友爆料王鸥成都参加妹妹婚礼,还带着自己的绯闻男友何九华,这是已经见过父母了?两人的故事被发现是在3个月前,王鸥被拍……杨幂跨年造型彻底封神!穿公主战袍气场全开太吸睛,少女感大爆棚对于12月31日晚上来说,最重要的绝对要数跨年活动,不论是朋友聚餐还是公司年庆都超级期待。对于娱乐圈来说,则是各大卫视争相播出的跨年晚会。单单是看到阵容都已经让人期待不已,在今……布拉特谈因凡蒂诺他想打倒我,因为他认为自己可以做的比我更好直播吧6月27日讯据Goal网站报道,前国际足联主席布拉特近日接受了记者的采访,在采访中他谈及了因凡蒂诺。目前,前国际足联主席布拉特指责现任国际足联主席因凡蒂诺试图破坏自……哮喘吃什么水果好?哮喘是一种危害性很大的疾病,是一种多种细胞,以及细胞参与引起患上的慢性炎症,哮喘患者饮食中禁止吃辛辣刺激、油腻、煎炸的食物,应该吃清淡、易消化、祛痰润肺的食物,下面主要给大家介……黑科技3C好物盘点,从相机耳机到投影仪都有,实用才是关键黑科技是小米CEO雷军喜欢使用的形容词,也是众多索尼粉丝用来形容索尼产品的惯用词!黑科技这三个字来源于动漫《全金属狂潮》,意思是指那些超出当下人类的知识范畴和科技认知以外的科学……曾经火爆酒桌上的江小白,如今为何无人问津了?原来如此白酒市场的繁荣,其背后也有看不见的波涛汹涌。每一款白酒在此间挣扎与沉浮,不断上演着三十年河东三十年河西的精彩剧情,而在一段时间内火爆的白酒,它们可以是说一匹黑马,可是谁也……张碧晨被质疑代孕,好友晒其生产照辟谣,并透露33周早产生下女众所周知,张碧晨和华晨宇在去年就早已官宣两人有一个女儿的消息。虽然两人如今并没有在一起,但是都承认了自己是孩子的父母。当时网友们在得知这个消息后都感到非常吃惊。当时令人意……每5个韩国年轻人,就有1个在买比特币,中年人炒房,不让我们炒本文来源:时代周报作者:马欢比特币暴跌,最痛苦的也许是韩国年轻人。自2021年11月创下历史最高价68928。9美元枚后,比特币就进入震荡下行通道,至今跌幅已经超过……特斯拉机器人核心是机器视觉,这一企业已和特斯拉合作特斯拉机器人核心是机器视觉,矩子科技给特斯拉电控系统工厂做机器视觉设备矩子科技给特斯拉电控系统工厂做机器视觉设备:26。机器视觉领域,目前国内和海外的企业更多在进行……冠军对冠军东方卫视首播,世界冠军爆梗不断,比娱乐明星好看12月10日晚间,全新的综艺节目《冠军对冠军》在东方卫视第一期首播。这期节目当中,邀请了几位娱乐明星,然后则是两位世界冠军。一位是短道速滑的韩天宇,一位是短跑的谢震业。在这期的……中年人生活一个字,叫做熬有人说,中年如秋天,虽然没有春天的妩媚多姿,但如层林尽染,由于增加了生活阅历的缘故,中年人对生活的理解也就变深了。中年人就如同秋色一般,有故事。也许是这样的,我也喜欢秋天……冬季是最适合养肝的季节,做好以下这些细节,可以养护肝脏少生病1、保持健康的体重肥胖会对身体健康造成很多不良的影响,如可能会引起胰岛素抵抗,增加发生脂肪肝的风险,影响肝脏的功能,增加发生肝硬化、肝脏衰竭甚至是肝癌的风险,所以为了肝脏……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网