Guava快速进阶培训教材(共44张).pptx
快速进阶主讲人:陈雄华目录是什么?开源核心类库!开源核心类库!快乐编程,快速编程!快乐编程,快速编程!高效稳定,充分测试!高效稳定,充分测试!如何获取?12.0项目网址:目录:合并字符串:合并字符串()1=(;)()(a,b,c);(1,);2=(,)(1,5,7);(2,1,5,7);.1=(,);.2=(,)();很明显,提供的方法更加的面向对象一点,因为它要先创建一个对象,然后使用它来分割字符串,而的方法则有点函数式编程的味道,它的方法都是静态的。和使用方法比拼:性能性能()=;=();(0;i1000000;)(,);()-);=();(0;i1000000;)(,)();()-);=();=(,);(0;i1000000;)();()-);和性能比拼:406(未复用):36(复用):10:灵活灵活()=(,)()头尾去除()忽略空字符串(,);2=(;)();(2,);:字符串匹配器字符串匹配器包括两个功能,其一是字符串匹配,其二是字符串处理,它使匹配和处理解耦了,使字符串处理的灵活性大大增强!()(89983),89983);(89983),);()(),);匹配条件复合运算1=(a,f)(c)(e)(z)(,*);(1,*e*);目录来看实例()=(1,3,4,6);=(,1,2,3,4);=(1,3,4,6);=(2,3,4,7);=(1,3,4,5,6);=(1,2,3,5);基础类型通用方法对应对应 (. ) ( , ) ( )() (. ) (. ) (. ) ( , ) ( , . )() ( , ) ()()()对应工具类基础类型基础类型对应工具类对应工具类 目录泛型实例化()1=();原始的方式1(a);1(b);2=();2(a);2(b);3=(a,b);4=(a,b,c,d);泛型实例化()1=();原始的方式1(a);1(b);2=();2(a);2(b);3=(a,b);4=(a,b,c,d);一对多之之前2=()(,)=();()=();();();自己实现太麻烦,你需要检查是否存在,否则创建一个,最后代码成为这个样子:比较痛苦,如果你希望检查中的对象是否存在,删除一个对象,或者遍历整个数据结构,那么需要更多的代码。来了=();()();(,);(,);(,);(,);();()4();()(,);()();()(!)这里需要注意,所有的的集合都有()方法,这个好处就是比较简单,你不用重复泛型信息了。更多这里有一点你可能会疑惑,就是为何方法返回的是一个而不是,这是因为前者会更加有用。如果你需要基于直接操作或者,那么可以使用在定义类型的时候使用子类名称:,和。例如:=();=();a,a.一个普通的是一个的集合,你可以使用来查询,但不能用查询,但是则都可以。=();a(,);(,);(,);();();();();l 强制唯一性:首先,强制其的唯一性,如果发现违规则会抛出,可用()覆盖已有的条目;l 方法:返回的视图,如果对视图对象操作将影响原对象;是什么?是什么?顾名思义,和的区别就是可以保存多个相同的对象它和有什么区别?它和有什么区别?在中,和有一个基本的区别,就是可以包含多个相同对象,且是有顺序的,而不能有重复,且不保证顺序(有些实现有顺序,例如和等)所以占据了和之间的一个灰色地带:允许重复,但是不保证顺序。注意:这种集合在中也被称作“”.怎么使用?怎么使用?()=();(,);(),2);(,2);(),0);有一个有用的功能,就是跟踪每种对象的数量,所以你可以用来进行数字统计。更多的集合类型提供了若干个额外的集合类,它们是集合类的补充,可以和集合类和平共处。 ( )目录()=(,);=(,()(s)(););(s:)(s)利用它们,可以为集合类的转换提供自定义的转换函数。:函数式编程()=(,);=();(s:)();使用()=(,);=(,()(s)(););使用,闭包风格:集合支持函数的最大用途是对集合元素进行各种转换,集合工具都拥有相应的:l (,);l (,);l 2(,)l (,)l (,)l (,)l (,)l (,)l (,)l .:谓词(或称断言)()=(,);=();(s:)(!(s)(s);=(,()(s)!(s););();最常的功能是,使用对集合进行过滤。:集合支持函数的最大用途是对集合元素进行过滤,集合工具都拥有相应的:l (,);l (,);l 2(,)l (,)l (,)l (,)l (,)l .注意:的过滤方法被特意忽略了,因为的()效率不高,所以请使用如下方式进行过滤:(2(,)目录:操作文件方便!()=(1);=()读为二进制数组=(),8)读文件内容拷贝文件()()()+/2);=(),8)读取每行通过回调函数单行处理(),8()=;(s)s;(););()=(1);使用需要外部显式()=();=();();使用则无需(),内部会之=();=();使用时,一定要在中外部资源,如果忘记了会造成资源锁定。提供的会自动完全资源关闭,的众多工具类都支持这对接口,免除关闭资源的问题。n (,)不会关闭流n (,)会关闭流n (,b)n ()n (,)n (r)n (r)目录方法实现()(),();()()(,()(,()();(o)(!(o);=()o;(),()(),();:覆盖通用方法()(),();()(17,37)()()();:覆盖通用方法()()(,()(,()();()()(,()(,()();:覆盖通用方法()(!();=();(),()(),();()(!();=();()()()()();入参检查()(,名称不能为空);(=0,年龄不能为负数);.()(!();=();()()()()();并发编程对进行了增强,包括:对进行扩展,增加了(,)方法,注册一个监听器,当中的任务完成时,在中运行。()=()(10)(1000)()()();)(10,)()(););演讲完毕,谢谢观看!