游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

行为参数化使用lambda传递代码

  行为参数化传递代码
  行为参数化是为了帮助我们应对不断变化的需求实现快速开发
  比如在List苹果集合中我们需要实现:找出绿色苹果找出大苹果(重量大于500g)找出绿色大苹果
  对于这样的场景,我们可以将对集合的需求就可以抽象为一个行为。假设场景:
  1。需要筛选绿苹果publicstaticListfilterGreenApples(Listinventory){ListresultnewArrayList();for(Appleapple:inventory){if(green。equals(apple。getColor()){筛选绿色result。add(apple);}}returnresult;}需要筛选各种颜色(将颜色抽象为参数)publicstaticListfilterGreenApples(Listinventory){ListresultnewArrayList();for(Appleapple:inventory){if(green。equals(apple。getColor()){result。add(apple);}}returnresult;}需要大于500g的苹果或者绿苹果publicstaticListfilterApples(Listinventory,Stringcolor,intweight,booleanflag){ListresultnewArrayList();for(Appleapple:inventory){if((flagapple。getColor()。equals(color))(!flagapple。getWeight()weight)){result。add(apple);}}returnresult;}这样确实比较蠢,不写注释的话,你能根据方法名判断flag是干啥的不?
  这个时候我们就可以运用行为参数化来帮我们解决问题。
  首先我们来抽象需求:我们考虑的
  是苹果,需要根据Apple的某些属性(比如它是绿色的吗?重量超过xxx克吗?)来返回一个
  boolean值。我们把它称为谓词(即一个返回boolean值的函数)。让我们定义一个接口来对选
  JDK中为我们提供了一个接口publicinterfaceApplePredicate{booleantest(Appleapple);}
  现在我们可以根据不同需求实现不同的行为publicclassAppleHeavyWeightPredicateimplementsApplePredicate{publicbooleantest(Appleapple){returnapple。getWeight()150;筛选大于150g的}}publicclassAppleGreenColorPredicateimplementsApplePredicate{publicbooleantest(Appleapple){returngreen。equals(apple。getColor());绿色的}}publicstaticListfilterApples(Listinventory,ApplePredicatep){ListresultnewArrayList();for(Appleapple:inventory){if(p。test(apple)){result。add(apple);}}returnresult;}
  最终实现了行为参数化的fliterAppler方法看起来是不错的publicclassAppleHeavyWeightPredicateimplementsApplePredicate{publicbooleantest(Appleapple){returnapple。getWeight()150;}}publicclassAppleGreenColorPredicateimplementsApplePredicate{publicbooleantest(Appleapple){returngreen。equals(apple。getColor());}}publicclassFilteringApples{publicstaticvoidmain(String。。。args){ListinventoryArrays。asList(newApple(80,green),newApple(155,green),newApple(120,red));ListheavyApplesfilterApples(inventory,newAppleHeavyWeightPredicate());ListgreenApplesfilterApples(inventory,newAppleGreenColorPredicate());}publicstaticListfilterApples(Listinventory,ApplePredicatep){ListresultnewArrayList();for(Appleapple:inventory){if(p。test(apple)){result。add(apple);}}returnresult;}}
  可是每次都还需要定义一个实现类再实例化,看起来好像十分的啰嗦。Java有一个机制称为匿名类,它可以让你同时
  声明和实例化一个类。它可以帮助你进一步改善代码,让它变得更简洁。
  下面的代码展示了如何通过创建一个用匿名类实现ApplePredicate的对象,重写筛选的例子:ListredApplesfilterApples(inventory,newApplePredicate(){publicbooleantest(Appleapple){returnred。equals(apple。getColor());}});
  但是不得不说匿名类真的很笨重,很多冗余的模版代码,而且还会有this指针的问题
  引入Lambda我们可以做到这样子,避免了笨重了匿名类。ListresultfilterApples(inventory,(Appleapple)red。equals(apple。getColor()));

赘婿中小蝉扮演者是谁扮演者王丽娜原来是选秀出道近段时间以来,电视剧《赘婿》正在热播当中,在这部剧当中,小婵这个角色十分的有趣,那么,小婵的扮演者是谁呢?据悉,小婵的扮演者是王丽娜,王丽娜是《创造营2020》选秀出道,一起来……骨传导蓝牙耳机天花板级别的存在?南卡骨传导RunnerPro在骨传导蓝牙耳机领域,南卡绝对是第一梯队的品牌,前段时间南卡推出了骨传导高端系列RunnerPro二代。那这款定位可以说是骨传导蓝牙耳机天花板级别的南卡RuuerPro2,到底……这软件,真的能急救大家好,我是九剑。首先问大家一个问题,什么东西对你而言最重要呢?是榜上有名?财务自由?亦或者是某个领域的专精,还是别的什么令人羡慕的事物。是的,这些都很重要,……阿兰若和凤九什么关系原来两人的关系来源于一个故事近日,电视剧《三生三世枕上书》正在二热播当中,相信喜欢看古装仙侠剧的朋友对这部剧的评价都还是挺高的呢,在剧中阿兰若和凤九到底是什么关系呢?据说两人之间的关系来源于一个故事,一起……剑雨结局剧情介绍,剑雨结局转轮王呢武侠剧《剑雨》给带来退隐江湖的女杀手曾静希望和小镇送信青年的江阿生签去过平凡生活,不过因他们拥有江湖圣物而卷入腥风血雨,最后细雨让阿生用假死欺骗转轮王,并他跟转轮王进行一场决战……全球2021Top100个知名品牌,有你家的吗FutureBrandIndex是一项全球品牌认知研究,根据认知实力而非财务实力,对普华永道全球100强公司的市值进行了重新排序。与其他一些报告不同的是,FutureBrand……赘婿之吉兴高照上映时间,赘婿之吉兴高照剧情介绍赘婿之吉兴高照说出来很多人不清楚,可赘婿之吉兴高照具体的上映时间,很多网友就想去了解一下有关的故事,看赘婿的剧给延续以前的剧情个给表演,带来很多的精彩戏给呈现,但有的网友就不清……安家徐文昌为什么被叫姑姑徐文昌扮演者罗晋个人资料介绍近日,电视就《安家》正在热播当中,自从开播以来就颇受大家的关注,在这部剧一部剧当中,徐文昌作为其中的男主角为什么被叫姑姑呢?这到底是什么原因呢?徐文昌扮演者罗晋个人资料介绍,一……急不可耐,小米发布元宇宙入场券柯南眼镜,资本市场下的产物三线发烧友,吃瓜在一线。小米发布PPT智能眼镜,入局元宇宙。2021年9月14日,小米手机官方在社交平台上发文宣布了新品小米智能眼镜探索版。该款智能眼镜将采用Mic……刚刚,近3万人在线抢车!拼多多又有大招,网友可以拼个房一位网友发现今年618不简单,不单单是多了一个电商新秀拼多多的百亿补贴,还连带着多了一场延续补贴战。结果一不小心没忍住,攒的钱全贡献出去了。这让身经百战的网购达人们纳闷不……自然堂开学季励志影片,献礼逐梦青年2020年注定是不一样的开学季。不断延长的寒假,压缩了原本只争朝夕的复习时间,没有了老师的当面答疑,也没有学校的敦促,原本焦灼的学习生活变得更加漫长而枯燥。而在无限的等待与焦虑……一生必看的十部励志片值得反复看10部经典励志片一生必看的十部励志片又哪些?励志电影想必很多人或多或少都又看过的,那么,你看过哪些励志片呢?下文综合整理了10部经典励志片,比如:英勇的心、肖申克的救赎、阿甘正传、恼怒的公牛、……
魅族再度推出多款新品,网友魅族18s系列值得一试就在近日,魅族召开了以有点东西为主题的秋季新品发布会,本次发布内容有魅族18s、18Pro、18X三款旗舰,同时还包括了Flyme、Lipro、PANDAER等在内的30款新品……运费险平均普降25,商家圈炸锅了据官方消息,从5月24日0点开始,所有商家的运费险费率都要下调了。运费险,每个商家和消费者都不陌生,不论你是天猫还是淘宝商家,不论你在天猫还是淘宝购物,一旦发生退换货,运……燕塘风行香满楼广东的牛奶谁在喝?广东有不少牛奶品牌的老字号。他们陪伴了一代又一代广东人成长以及老去。上回的推文《我在超市找不到光明牛奶了》,好像集中戳中了大家伙的某个点,佳佳在评论区捕获了不少广东……奇瑞大蚂蚁每一款优秀的汽车背后是设计师们的奋力托举奇瑞大蚂蚁,一款非常优秀的SUV新能源汽车产品,这款汽车自上市以来,就受到了很多消费者的认可与支持,销量也是非常不错的。可见,奇瑞大蚂蚁这款新能源汽车产品是一款非常优秀的汽车,……怎么选择一款性价比高的无线网卡国庆佳节虽然已经过完,其中有些人选择外出旅游,有些人选择返乡回家看看父母,其中有些人在回到老家的时候发现没有WIFI,玩不了吃鸡游戏和英雄联盟!这可怎么办?其实只需要一个小小的……多家主流媒体对国家高新技术企业小白智能科技进行了争相报道近日,央视新闻联播、吉林卫视等多个栏目和媒体对小白智能科技的小白人机器人进行了报道!小白人机器人登上国家级别最高、受众最广的央视新闻联播再获肯定,同时也说明小白人受到高度关注,……皮实稳定开不坏,大空间家商两用,盘点市场上适合创业的神车这几年创业这个标签被炒得火热,果然没有不想当将军的士兵。当老板固然从容快乐,可要照料的事维度也更多。好比说实体经济,开店选址是门学问,商品的运输、客户的洽谈与维护等在前期都需要……为什么要做客户背景调查?我们为什么要做客户背景调查呢?大家都知道要对目标客户进行调查,但是到底调查什么、从哪些方面入手、内容有哪些又是通过什么渠道?一、首先谈谈为什么要做客户背景调查分享一……国内基于安卓8。1的OS满满黑科技,不过不是MIUI!如今国内手机UI做的也是越来越好,从最开始的原生安卓系统到现在扁平化的UI界面风格,用户有了自己的自主权,然而一款好的UI也是非常重要的,很多用户在选择购买手机的时候大部分都是……2K画质更清晰看店护家更安心360智能摄像机红色警戒高配版360智能摄像机是较早进入智能家居监控领域的,也是我最早接触到的智能摄像机,小水滴、摄像机云台版、智能门铃这些设备都在使用,期间也接触到许多款智能摄像机,大家在配置功能上没有较……长津湖电影里没有韩军,所以拍的假?事实是,韩军逃跑得太快众所周知,由徐克、林超贤等三位导演以及吴京等多名知名演员参与的电影《长津湖》在国庆档取得了相当优秀的票房成绩。根据相关统计,截止到10月14日,《长津湖》的总票房已经突破46亿……如何打造炫酷的桌面?这款会发光的游戏键盘别错过Hi大家好,我是三重奏在上篇文章中,我单独分享过一款主打光污染的中塔式机箱酷冷至尊MB540,其有着辨识度超高的翼状灯条设计,在搭配上堡垒240水冷之后,整体灯光效果十分……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网