Guava MultiSet
来源:互联网 发布:nfc写卡器软件 编辑:程序博客网 时间:2024/06/06 10:01
Guava引入了很多JDK没有的、但我们发现明显有用的新集合类型。这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念。作为一般规则,Guava集合非常精准地遵循了JDK接口契约。
统计一个词在文档中出现了多少次,传统的做法是这样的:
Map<String, Integer> counts = new HashMap<String, Integer>();for (String word : words) { Integer count = counts.get(word); if (count == null) { counts.put(word, 1); } else { counts.put(word, count + 1); }}
可以用两种方式看待Multiset:
2.Map<E, Integer>,键为元素,值为计数
Guava的Multiset API也结合考虑了这两种方式:
iterator()返回一个迭代器,包含Multiset的所有元素(包括重复的元素)
size()返回所有元素的总个数(包括重复的元素)
当把Multiset看作Map<E, Integer>时,它也提供了符合性能期望的查询操作:
count(Object)返回给定元素的计数。HashMultiset.count的复杂度为O(1),TreeMultiset.count的复杂度为O(log n)。
entrySet()返回Set<Multiset.Entry<E>>,和Map的entrySet类似。
elementSet()返回所有不重复元素的Set<E>,和Map的keySet()类似。
所有Multiset实现的内存消耗随着不重复元素的个数线性增长。
Multiset接口定义的接口主要有:
add(E element) :向其中添加单个元素
add(E element,int occurrences) : 向其中添加指定个数的元素
count(Object element) : 返回给定参数元素的个数
remove(E element) : 移除一个元素,其count值 会响应减少
remove(E element,int occurrences): 移除相应个数的元素
elementSet() : 将不同的元素放入一个Set中
entrySet(): 类似与Map.entrySet 返回Set<Multiset.Entry>。包含的Entry支持使用getElement()和getCount()
setCount(E element ,int count): 设定某一个元素的重复次数
setCount(E element,int oldCount,int newCount): 将符合原有重复个数的元素修改为新的重复次数
retainAll(Collection c) : 保留出现在给定集合参数的所有的元素
removeAll(Collectionc) : 去除出现给给定集合参数的所有的元素
- Guava MultiSet
- Java-类库-Guava-Multiset
- guava之Multiset
- Guava使用之MultiSet
- Guava类库学习--Multiset+Multimap+BiMap
- Guava Multiset接口使用与分析
- guava multimap 和 multiset的使用
- guava之MultiSet、MultiMap和BiMap
- Guava学习笔记:Guava新增集合类型-Multiset
- Guava学习笔记【7】:Guava新增集合类型-Multiset
- Google Guava学习(6)-Guava集合工具 Multiset
- multiset
- multiset
- multiset
- multiset
- multiset
- multiset
- multiset
- The UNIX Philosophy
- 发布项目到服务器(Server Tomcat v8.0 Server at localhost failed to start.)
- 算法第十九周--NP问题证明
- (ubuntu 16.04) Git 本地仓库简单操作学习 (一)
- Android侧滑删除另一种实现,SwipeListView补充
- Guava MultiSet
- Java for循环每次都通过list.size()和 string.length()获取大小是否消耗性能?
- 正则表达式-爬虫(四)
- java环境变量、集成开发环境与使用两个类
- Linux命令行有道词典查询
- ClassLoader的工作机制和概念
- 手机页面,点击电话号码进入拨号界面
- re_正则
- Swift和OC的混编(一)