Guava包学习--Multiset
2016-01-11 14:24
274 查看
Multiset之前倒是没用过,后来看了下还挺有用,其实它就是支持重复元素的HashSet,相当于list+set的集合,综合了两种集合的优点。
它扩展了Collection:
先用一下看看:
其实它和list很像,支持一个叫做count计数的方法,直接拿elementSet()的时候它会提供唯一的元素列表。使用它的entrySet会有一个唯一元素+计数的输出。
我们看下它的继承和实现体系:
其实它继承了AbstractMapBasedMultiset,然后AbstractMapBasedMultiset又继承了AbstractMultiset,然后又实现了Multiset的接口,Multiset继承了Collection,然后在Multiset对象中有一个count的计数,当有元素进入和输出的时候会有计数器的处理。
其实AbstractMapBasedMultiset就是一个key+count的map,这下就容易理解了。其实HashMultiSet就是对一个map进行了继承和覆盖,然后方法去操作一些唯一元素的计数与处理,但是又可以不丢失元素,还加快了get的获得速度。
至于这个Set的其实工具类应该和之前看的没有大的异同,暂时就不深入看了,接下来去看下MultiMap。
它扩展了Collection:
@GwtCompatible publicinterfaceMultiset<E>extendsCollection<E>{}
先用一下看看:
List<String>list=Lists.newArrayList("10","20","hello","hah","hah","hah"); Multiset<String>set=HashMultiset.create(list); System.out.println(set.contains("hello")); System.out.println(set.count("hah")); System.out.println(set.count("haha")); System.out.println(set.elementSet().toString()+set.entrySet().toString()); true 3 0 [hello,20,10,hah][hello,20,10,hahx3]
其实它和list很像,支持一个叫做count计数的方法,直接拿elementSet()的时候它会提供唯一的元素列表。使用它的entrySet会有一个唯一元素+计数的输出。
我们看下它的继承和实现体系:
其实它继承了AbstractMapBasedMultiset,然后AbstractMapBasedMultiset又继承了AbstractMultiset,然后又实现了Multiset的接口,Multiset继承了Collection,然后在Multiset对象中有一个count的计数,当有元素进入和输出的时候会有计数器的处理。
其实AbstractMapBasedMultiset就是一个key+count的map,这下就容易理解了。其实HashMultiSet就是对一个map进行了继承和覆盖,然后方法去操作一些唯一元素的计数与处理,但是又可以不丢失元素,还加快了get的获得速度。
至于这个Set的其实工具类应该和之前看的没有大的异同,暂时就不深入看了,接下来去看下MultiMap。
相关文章推荐
- c#大圣之路——c#获取DataGrid中选中行某一列的数据,传到其他页面,实现页面间数据传递
- 一鍵分享(優化后)
- 努力追寻,只为对得起自己
- 浅谈HTTP中Get与Post的区别
- 理解RESTFul架构
- Qt学习(16)
- mac 下真机调试 android 手机
- linux shell
- Difference between <? super T> and <? extends T> in Java
- 复合类型(二):指针
- 获取当前路径
- ZOJ 2095 Divisor Summation (求因子和)
- const 和 #define区别
- mysql 优化analyze table
- xcode中create groups 和 create folder reference 的区别
- haproxy 详细配置
- i386段式内存管理
- 备份策略
- 读<看透Spring MVC 源代码分析与实践>Tomcat笔记
- Ceph学习----Ceph 分布式部署