[Google Guava]学习--新集合类型Multiset
Guava提供了一个新集合类型Multiset,它可以多次添加相等的元素,且和元素顺序无关。Multiset继承于JDK的Cllection接口,而不是Set接口。
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) : 去除出现给给定集合参数的所有的元素
- package com.parry.guava.GuavaTest;
- import java.util.ArrayList;
- import java.util.List;
- import com.google.common.collect.HashMultiset;
- import com.google.common.collect.Multiset;
- public class MultisetTest {
- public static void main(String[] args) {
- String str = "this is a cat and that is a mice";
- String[] strArr = str.split(" ");
- List<String> words = new ArrayList<String>();
- for (String stmp : strArr) {
- words.add(stmp);
- }
- Multiset<String> wordMultiset = HashMultiset.create();
- wordMultiset.addAll(words);
- //将不同的元素放在一个集合set中
- for (String key : wordMultiset.elementSet()) {
- //查看指定元素的个数
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----向集合中添加元素-----");
- //向集合中添加元素
- wordMultiset.add("that");
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----向集合中添加若干个元素-----");
- //向集合中添加若干个元素
- wordMultiset.add("and", 10);
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----向集合中移出一个元素-----");
- //向集合中移出一个元素
- wordMultiset.remove("that");
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----向集合中移出若干个元素-----");
- //向集合中移出若干个元素,如果元素的个数小于要移除的个数,则会把该元素移除光
- wordMultiset.remove("and",10);
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----向集合中移出一个元素-----");
- //向集合中移出一个元素
- wordMultiset.remove("is");
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----设定某一个元素的重复次数-----");
- //设定某一个元素的重复次数
- wordMultiset.setCount("and", 10);
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----设置复合元素的个数设为新的重复次数-----");
- //设置复合元素的个数设为新的重复次数(条件是参数等于原来的元素个数)
- wordMultiset.setCount("and", 1,0);
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- System.out.println("-----删除给定集合中的元素-----");
- //删除给定集合中的元素
- wordMultiset.removeAll(words);
- for (String key : wordMultiset.elementSet()) {
- System.out.println(key + "-->" + wordMultiset.count(key));
- }
- }
- }
[Google Guava]学习--新集合类型Multiset的更多相关文章
- [Google Guava]学习--新集合类型Multimap
每个有经验的Java程序员都在某处实现过Map<K, List<V>>或Map<K, Set<V>>,并且要忍受这个结构的笨拙. 假如目前有个需求是给两 ...
- [Google Guava]学习--新集合类型BiMap
BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构. Bimap 能非常方便的实现map<key,value>的转置要求,也就是value变为key,key变 ...
- [Google Guava] 2.2-新集合类型
转自:并发编程网 原文链接:http://ifeve.com/google-guava-newcollectiontypes/ 链接博客其他文章中还有更多的guava其他功能的描述,有空可慢慢看. G ...
- 强大的Guava中的新集合类型: Multiset, Multimap, BiMap, Table, ClassToInstanceMap, RangeSet, RangeMap等
一 Multiset /** * 新类型集合: Multiset: Multiset就是可以保存多个相同的对象,并且无序 * 占据了List和Set之间的一个灰色地带 * 其他实现: TreeMult ...
- [Guava学习笔记]Collections: 不可变集合, 新集合类型
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3843386.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- 004-guava 集合-新增集合类型-MultiSet, MultiMap, BiMap , Table, ClassToInstanceMap, RangeSe, RangeMap等
一.概述 Guava引入了很多JDK没有的.但明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契 ...
- Guava学习笔记:Guava新增集合类型-Multiset
Guava引进了JDK里没有的,但是非常有用的一些新的集合类型.所有这些新集合类型都能和JDK里的集合平滑集成.Guava集合非常精准地实现了JDK定义的接口.Guava中定义的新集合有: Multi ...
- Guava源码学习(四)新集合类型
基于版本:Guava 22.0 Wiki:New collection types 0. 简介 Guava提供了很多好用的集合工具,比如Multiset和BiMap,本文介绍了这些新集合类型的使用方式 ...
- Guava集合--新集合类型
Guava引入了很多JDK没有的.但我们发现明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契约 ...
随机推荐
- css3中变形与动画(二)
css3制作动画的几个属性:变形(transform),过渡(transition)和动画(animation). transform介绍过了.接下来介绍过渡transition. 一.例子 先通过一 ...
- CETV面试总结
在通过CETV的网上笔试之后,我收到了面试通知,我纠结片刻,就买了第二天去广州的高铁,虽然感觉自己硬件方面的知识已经快忘完了,但还是想去一下,起码是一种经历.对一个路痴和知识储备不足的我来讲,这一切都 ...
- 结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
- 《Invert》开发日志02:游戏风格定型
声明:以下涉及到的<God of Light>.<Valiant Hearts : The Great War>.<Angry Birds 2>游戏截图均来自其Ap ...
- JAVA刷CSDN博客流量的思路
先来看看CSDN统计博客访问量的原理: 当客户端向服务器发起请求的时候,每个ip被统计一次,上图的三个客户端指的是三个不同的ip地址.并且在某段时间内,同以ip访问同一篇文章,只能算是一次访问量.同一 ...
- Maven学习(一)安装 配置
安装环境 windowXP 32 下载地址 http://maven.apache.org/download.cgi 安装包 apache-maven-3.2.3.zip 一.安装 Step1 解压缩 ...
- [技巧] 解决Win7下VMware中vmx86.sys报错的问题
电梯直达 1楼 发表于 2012-7-2 15:14:22||倒序浏览|阅读模式 .pcb { margin-right: 0 } 当以普通用户权限运行的时候,VMware便会如此报错"无法 ...
- [No000020]背单词提不起兴趣怎么办?
- android edittext 去边框 去下划线
EditText的background属性设置为@null就搞定了:android:background="@null"style属性倒是可加可不加 附原文:@SlumberMac ...
- iOS崩溃调试的使用和技巧总结
在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题.简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的. 现在网上有很多关于解 ...