您的位置:首页 > 编程语言 > Go语言

Google Guava Collections 使用介绍

2015-06-12 19:00 465 查看
Google Guava Collections(以下都简称为 Guava Collections)是 Java 集合框架增强和扩展。每个 Java 程序员都会在工作中使用各种数据结构,很多情况下 Java集合框架可以帮助你完成这类工作。但是在有些场合你使用了 Java集合框架 的 API,还是需要写很多代码来实现一些复杂逻辑,这时就可以尝试使用 Guava 集合来帮助你完成这些工作。这些高质量的 API 使你的代码更短,更易于阅读和修改,工作更加轻松。比如:

还在使用 Collections.unmodifiableXXX() ?Immutable Collections 才是不可修改的集合。

map规定key不能重复,value可以重复,但是更高一步要求:value也不能重复,这怎么办?难道每次使用put方法之前都要循环检查一次?NO ,BiMap来帮你,BiMap能够保证value也不会重复,否则放不进去。

同理:Set集合要求不能重复元素,但是我要重复的怎么办?Multiset来帮忙,Multiset能够放相同元素。

当然,没有Guava集合,仍然可以自己编写,或者在原理基础上添加函数,或者其他等等,但是Guava 集合提供的这些 API 经过精心设计,而且还有 25000 个单元测试来保障它的质量。所以我们没必要重新发明轮子。

BiMap:

BiMap 实现了 java.util.Map 接口,它的主要特点就是key和value都是一对一的关系,也就是key和value都永远不可能出现重复的情况。如果value中存在重复的元素,就是报告 IllegalArgumentException异常。现实当中可能会存在这样的逻辑,根据value值查找其key值,如下代码:

for(Map.Entry<key, value> entry : map.entreSet()){
if(entry.getValue().equals(waitvalue)){
return entry.getKey();
}
}


假如使用BiMap:

return biMap.inverse().get(waitvalue);


inverse是将map中的可以和value位置互相调换。

Multiset

我们知道,Set集合中是不能够放相同的元素的,但是如果在业务中允许这样的情况出现的时候,我们在没有Guava情况下应该是怎么实现的呢?或者说这从根本上违背了Set接口的约定,因为Set接口的javadoc中规定已经不能够放相同重复元素的,但是事实上,MultiSet并没有实现Set接口,Set接口的集合是这样保存的【a,b,bb,vv,f】,但是MultiSet是这样的:【a x 2,b x 2,bb x 2,vv x 2,f x 3】.

场景:一般来说,有重复元素需要放入Set中,我们都不用Set了,而是用List集合,这是可行的,但是更深一层需求:统计其中的相同元素的个数?这当然面部了需要使用循环来操作吧?至少你要写一个循环了。

但是MultiSet却提供了这么一个统计函数:count();

1.不用循环,2.不用写统计变量.3.可读性强。

这不是有很好啊.

好了,最近项目中使用了这个Guava,暂时第一阶段介绍到这里,后面详细介绍其他的类的用法,更多可以参考对用API吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息