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/