Google Guava v11 Collections示例
利用apache Collections和google guava对list和map进行过滤和排序 http://www.jiancool.com/article/50723356810/
官方http://code.google.com/p/guava-libraries/wiki/GuavaExplained?tm=6
基础工具–Guava-Libraries学习笔记
[url]http://www.cnblogs.com/htynkn/archive/2012/08/19/guava_1.html [/url]
Guava-Libraries是google对java的一个扩展,主要涵盖集合、缓存、并发、I/O、反射等等。
它本来是Google内部所使用的一个类库,后来整理开源出来了。这套库的设计引入了很多新的理念,研究一下可能会使你对Java这门语言有新的认识和看法。
地址:[url]http://code.google.com/p/guava-libraries/ [/url]
。。。
。。。
Google Guava集合4:创建方法和只读特性 http://vipcowrie.iteye.com/blog/1522375
本文地址:http://www.longtask.com/blog/?p=730
Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库。目前主要包含:
com.google.common.annotations
com.google.common.base
com.google.common.cache
com.google.common.collect
com.google.common.eventbus
com.google.common.io
com.google.common.net
com.google.common.primitives
com.google.common.util.concurrent
这里先介绍一下最常用的com.google.common.collect包中的最常用的一些API,仅仅讨论一下API的使用方法,没有讨论到实现细节。
1:Collections的构造方法
我们平时直接创建Collections对象的方法一般都是用new关键字,有泛型的情况下看起来会比较长:
在java7中,这个初始化做了简化:
可以通过Guava的API来这样写:
得到一个有size的Map:
在JDK的collection类型,在Guava中都可以找到相关的static的构造方法,例如:Lists , Sets , Maps , Queues。新的colleciont类型提供了直接构造的方法,例如:HashMultimap<String, String> multiMap = HashMultimap.create();
2:有限功能的函数式编程
介绍2个重要的接口:
com.google.common.base.Function : 根据输入值来得到输出值
com.google.common.base.Predicate : 根据输入值得到 true 或者 false
拿Collections2中有2个函数式编程的接口:filter , transform ,例如 :在Collection<Integer>中过滤大于某数的内容:
把Lis<Integer>中的Integer类型转换为String , 并添加test作为后缀字符:
需要说明的是每次调用返回都是新的对象,同时操作过程不是线程安全的。
3:Multimap and BiMap
Map中一个key只能有一个,后续put进去的内容会覆盖前面的内容,有些业务需要有相同的key,但是有不同的内容,Guava中提供了
Multimaps 来解决这个问题。
BiMap可以有相同的key,但是不能有相同的value,如果不同的key设置了相同的value,则会抛出IllegalArgumentException异常,可以通过inverse()来反转kv,values()来获取value的set。
4:tables
给出一个columns, rows , values, 这个API和Map<K , Map<K , V>>形式差不多,多了一些封装。例子:
5:更简洁的判断
使用Preconditions中的方法来判断是否为空等操作,这个操作和spring,apache common-lang中的API类似
Common-lang,spring中的方法需要逐个调用。而Guava中支持。
6:约束
对Collection中的新加入元素做约束,只有符合条件的元素才能够被添加到Collection中,可以使用Constraint类来操作。
示例代码:
参考资料
http://blog.solidcraft.eu/2010/10/googole-guava-v07-examples.html
http://insightfullogic.com/blog/2011/oct/21/5-reasons-use-guava/#
http://codingjunkie.net/google-guava-cache/
