Guava培训.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Guava培训.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Guava 培训
- 资源描述:
-
1、Guava快速进阶主讲人主讲人:陈雄华陈雄华第1页,共44页。目录第2页,共44页。Guava是什么?Google开源核心类库!开源核心类库!快乐编程,快速编程!快乐编程,快速编程!高效高效稳定,充分测试!稳定,充分测试!第3页,共44页。如何获取Guava?com.google.guavaguava12.0http:/ Stringc,d);第16页,共44页。泛型实例化:SetTestpublicvoidtestListGeneric()Listlist1=newArrayList();/原始的方式list1.add(a);list1.add(b);Listlist2=Lists.newA
2、rrayList();list2.add(a);list2.add(b);Listlist3=Lists.newArrayList(a,b);Listlist4=Lists.asList(a,b,new Stringc,d);第17页,共44页。一对多之Multimap之前MapString,ListmyClassListMaptest2=newHashMapString,List()voidputMyObject(Stringkey,Objectvalue)ListmyClassList=myClassListMap.get(key);if(myClassList=null)myClassL
3、ist=newArrayList();myClassListMap.put(key,myClassList);myClassList.add(value);自己实现太麻烦,你需要检查key是否存在,否则创建一个,最后代码成为这个样子:比较痛苦,如果你希望检查List中的对象是否存在,删除一个对象,或者遍历整个数据结构,那么需要更多的代码。第18页,共44页。Multimap来来了了MultimapmyMultimap=ArrayListMultimap.create();TestpublicvoidtestMultimap()MultimapmyMultimap=ArrayListMultim
4、ap.create();myMultimap.put(Fruits,Bannana);myMultimap.put(Fruits,Apple);myMultimap.put(Fruits,Pear);myMultimap.put(Vegetables,Carrot);intsize=myMultimap.size();System.out.println(size);/4Collectionfruits=myMultimap.get(Fruits);System.out.println(fruits);/Bannana,Apple myMultimap.remove(Fruits,Pear);
5、System.out.println(myMultimap.get(Fruits);/Bannana,Apple myMultimap.removeAll(Fruits);System.out.println(myMultimap.get(Fruits);/(EmptyCollection!)这里需要注意,所有的guava的集合都有create()方法,这个好处就是比较简单,你不用重复泛型信息了。第19页,共44页。Multimap更多更多这里有一点你可能会疑惑,就是为何get方法返回的是一个collection而不是list,这是因为前者会更加有用。如果你需要基于multimap直接操作li
6、st或者set,那么可以使用在定义类型的时候使用子类名称:ListMultimap,SetMultimap和SortedSetMultimap。例如:ListMutlimapmyMutlimap=ArrayListMultimap.create();ListmyValues=myMutlimap.get(myKey);/ReturnsaList,notaCollection.第20页,共44页。BiMaps一个普通的map是一个key/value的集合,你可以使用key来查询,但不能用value查询key,但是BiMaps则都可以。BiMapbritishToAmerican=HashBiMa
7、p.create();/InitialiseandusejustlikeanormalmapbritishToAmerican.put(aubergine,egglant);britishToAmerican.put(courgette,zucchini);britishToAmerican.put(jam,jelly);System.out.println(britishToAmerican.get(aubergine);/eggplantBiMapamericanToBritish=britishToAmerican.inverse();System.out.println(america
8、nToBritish.get(eggplant);/aubergineSystem.out.println(americanToBritish.get(zucchini);/courgettel强制唯一性:首先,BiMap强制其value的唯一性,如果发现违规则会抛出,可用forcePut(key,value)覆盖已有的条目;linverse方法:返回BiMap的视图,如果对视图对象操作将影响原BiMap对象;第21页,共44页。MultisetMultiset是什么?是什么?顾名思义,Multiset和Set的区别就是可以保存多个相同的对象它和它和List有什么区别?有什么区别?在JDK中,
9、List和Set有一个基本的区别,就是List可以包含多个相同对象,且是有顺序的,而Set不能有重复,且不保证顺序(有些实现有顺序,例如LinkedHashSet和SortedSet等)所以Multiset占据了List和Set之间的一个灰色地带:允许重复,但是不保证顺序。注意:这种集合在apachecommonscollections中也被称作“Bag”.第22页,共44页。Multiset怎么使用?怎么使用?TestpublicvoidtestMultiset()MultisetwordsMultiset=HashMultiset.create();wordsMultiset.addAll
10、(Lists.newArrayList(good,good,study,day,day,up);assertEquals(wordsMultiset.count(good),2);wordsMultiset.remove(good,2);assertEquals(wordsMultiset.count(good),0);Multiset有一个有用的功能,就是跟踪每种对象的数量,所以你可以用来进行数字统计。第23页,共44页。更多的集合类型Guava提供了若干个额外的集合类,它们是JDK集合类的补充,可以和JDK集合类和平共处。JDKGuavaMapCorrespondingMultisetSu
11、pportsnullelementsHashMapHashMultisetYesTreeMapTreeMultisetYes(ifthecomparatordoes)LinkedHashMapLinkedHashMultisetYesConcurrentHashMapConcurrentHashMultisetNoImmutableMapImmutableMultisetNo第24页,共44页。目录第25页,共44页。FunctionTestpublicvoidtestTransform()ListlowerCase=Lists.newArrayList(tom,jhon);Listupper
12、Case=Lists.transform(lowerCase,newFunction()publicStringapply(NullableStrings)returns.toUpperCase(););for(Strings:upperCase)System.out.println(s);/printTOM,JHON利用它们,可以为集合类的转换提供自定义的转换函数。第26页,共44页。Function:函数式编程TestpublicvoidtestTransform()ListlowerCase=Lists.newArrayList(tom,jhon);ListupperCase=Lists
13、.newArrayList();for(Strings:lowerCase)upperCase.add(s.toUpperCase();使用JDKTestpublicvoidtestTransform()ListlowerCase=Lists.newArrayList(tom,jhon);ListupperCase=Lists.transform(lowerCase,newFunction()publicStringapply(Strings)returns.toUpperCase(););使用Guava,闭包风格第27页,共44页。Function:集合Api支持函数的最大用途是对集合元素进
14、行各种转换集合元素进行各种转换,Guava集合工具都拥有相应的API:lIterables.transform(Iterable,Function);l Iterators.transform(Iterator,Function);l Collections2.transform(Collection,Function)l Lists.transform(List,Function)l Maps.transformValues(Map,Function)l Multimaps.transformValues(Multimap,Function)lMultimaps.transformValue
展开阅读全文