Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧

Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧

ID:41394147

大小:61.13 KB

页数:8页

时间:2019-08-24

Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧_第1页
Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧_第2页
Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧_第3页
Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧_第4页
Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧_第5页
资源描述:

《Java经典类库-Guava中的函数式编程讲解-Java开发Java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、hva经典类库-Guava中的函数式编程讲解・编程开发技术Java经典类库-Guava中的函数式编程讲解原文出处:黄博文如果我耍新建一个java的项目,那么冇两个类库是必备的,一个是junit,另一个是Guavac选择junit,因为我喜欢TDD,喜欢自动化测试。而是用Guava,是因为我喜欢简洁的APIoGuava提供了很多的实用工具函数来弥补java标准库的不足,另外Guava还引入了函数式编程的概念,在一定程度上缓解了java在JDK1.8Z前没有lambda的缺陷,使使用java书写简洁易读的函数式风格的代码成为可能。下面就简单的介绍下Guava中的一些体现了函数式编

2、程的API。F订ter我们先创建一个简单的Person类。Person.javapublicclassPerson{publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this,age=age;}privateStringname;privateintage;publicPerson(Stringname,intage){this,name=name;this,a

3、ge=age;如果要产生一个Person类的List,通常的写法可能是这样子。Listpeople=newArrayList();people,add(newPerson(〃boven〃,27));people,add(newPerson(20));people,add(newPerson(z/Katy,z,18));people.add(newPerson("Logon",24));jfljGuava捉供了一个newArrayList的方法,其自带类型推演,并可以方便的生成一个List,并口通过参数传递初始化值。Listpe

4、ople=newArrayList(newPerson(〃bowen〃,27),newPerson("bob",20),newPerson(,zKaty,z,18),newPerson(/zLogon/z,24));当然,这不算函数式编程的范畴,这是Guava给我们提供的一个实用的函数。如果我们选取其屮年龄大于20的人,通常的写法可能是这样子。ListoldPeople=newArrayList();for(Personperson:people){辻(person.gctAge()>=20){oldPeople.add(person);}}这

5、就是典型的filter模式。filter即从一个集合中根据一个条件筛选元素。其中person.getAge()>=20就是这个条件。Guava为这种模式提供了一个filter的方法。所以我们可以这样写。ListoldPeople=newArrayList(filter(people,newPredicate(){publicbooleanapply(Personperson){returnperson,gctAge()>=20;}}));这里的Predicate是Guava中的一个接口,我们来看看它的定义。Predicate.java©GwtC

6、ompatiblepublicinterfacePredicate{/***Returnstheresultofapplyingthispredicateto{@codeinput}.Thismethodisgcncreilly*expected,butnotabsolutelyrequired,tohavethefollowingproperties:**

    *〈li>Itscxccutiondocsnotcauseanyobservablesideeffects.*
  • Thecomputationisconsistentwithequal

    7、s;thatis,{©linkObjects#equal*Objects,equal){©code(a,b)}impliesthat{©codepredicate,apply(a)==*prcdicatc.eipply(b))}.*

**©throwsNullPointerExceptionif{©codeinput}isnullandthispredicatedoesnotacceptnull*arguments*/booleanapply(@NullableTinput);/***I

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。