七种武器:Collection 之 Google Guava
2010-08-20 17:31
295 查看
base
String
javaString即一个不可变的char数组Splitter
String[]split=str.split(Stringregex);GoogleSplitter的分隔符可以是单个的char,或者CharMatcher,或者字符串str,或者正则表达式的字符串patternStr,或者是一个Pattern,或者是固定length来分隔,分别有对应的
另外还有
最后,唯一的API,split(CharSequenceseq)来split目标字符串(char序列)
Splitter.on(',').trimResults().omitEmptyStrings().split("foo,,bar,quux,")
//["foo","bar","quux"]
Joiner
javastring中有Split没Join,所以经常使用StringBuilder进行append,Joiner即是很好的替代。[code]Joinerjoiner=Joiner.on(";").skipNulls(); ... returnjoiner.join("Harry",null,"Ron","Hermione");
CharMatcher
单个字符串的匹配器,看起来API很多,但在Theserepresentapartialcrossproductoftwonotions:
(a)what'sa"matching"character?
(b)whattodowiththosematchingcharacters?
返回boolean类型的API用类匹配,返回int类型的API用来查找,返回String用来处理(retain,remove,replace,trim)
StringseriesId=CharMatcher.DIGIT.or(CharMatcher.is('-')).retainFrom(input);
Function
对集合,经常要做的一个操作是将集合中的对象一一转换成另外的一个对象,这里需要map。另外一个操作是将其中某些元素剔除,需要Filter.basepackage中定义了Function,但很显然其用武之地在collection包中
Predicate
谓词是一种特殊的Function,其转换输出是一个boolean。防守式编程(Defenseprogramming使你的程序更健壮)中经常用到,assert是另外一种选择
if(count<=0){ thrownewIllegalArgumentException("mustbepositive:"+count); }
tobereplacedwiththemorecompact
checkArgument(count>0,"mustbepositive:%s",count);
Equivalence
FinalizableReference
http://weblogs.java.net/blog/enicholas/archive/2006/05/understanding_w.html
关于Reference,本身似乎就让人迷惑。这里试着给出要点:
reference对象和referent对象是两个东东
我们的目标是referent在需要时(比如内存不够/调用gc时,soft/weak)能被回收掉,避免出现OOM
reference本身也是一个对象,往往被强引用,比如放在一个容器里。这时需要app来清除deadreferences(get返回null的reference)
Referencequeues提供一种机制,通知referent的状态改变(可以被垃圾回收/已经被垃圾回收,weak_soft/Phantom),这种机制往往被用来释放resource资源,比如filehandler
清除referenceobject并不是回收referenceobject本身,而是释放referenceobject对referent的引用
Google的FinalizableReference提供finalizeReferent()来让app做一些清理工作,无须自己来显示维持Referencequeue,并pollqueue,调用清理方法。
参考链接
相关文章推荐
- Google的Guava它Collection升华
- Google的Guava之Collection升华
- Google Guava学习之Immutable Collection
- google Guava Cache使用
- 企业网络管理员必备 七种武器对抗BT
- Google Guava 工具集__1__Optional对象设计 使用和避免 Null
- 【转】应用软件系统架构设计的“七种武器”
- 程序员的七种武器
- 程序员 :超越软件蓝领的七种武器
- Google Guava官方教程(中文版)
- Google Guava EventBus
- 揭密Oracle之七种武器之四:揭密Buffer Cache中的链表【主】
- [转载]Google Guava官方教程(中文版)
- 2005百姓投资理财之“七种武器”(转)
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
- 敏捷其实很简单(9)Scrum Master的七种武器之离别钩霸王枪箱子
- [转载]项目风险管理七种武器-多情环
- [Java工具集]Google Guava 常用功能
- Google Guava 8-区间
- Guava Collection