`
vipcowrie
  • 浏览: 352279 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
1167aa84-228b-38f8-88a0-4733613efdef
让Java跑起来
浏览量:64806
文章分类
社区版块
存档分类
最新评论

Google Guava集合1: Multisets

阅读更多

Google Guava: Multisets


我们继续研究Guava,这次我将介绍Multiset,虽然这个不经常使用,但是还是有必要介绍一下。

Multiset是什么?
顾名思义,Multiset和Set的区别就是可以保存多个相同的对象

它和List有什么区别?
在JDK中,List和Set有一个基本的区别,就是List可以包含多个相同对象,且是有顺序的,而Set不能有重复,且不保证顺序(有些实现有顺序,例如LinkedHashSet和SortedSet等)

所以Multiset占据了List和Set之间的一个灰色地带:允许重复,但是不保证顺序。

注意:这种集合在apache commons collections中也被称作“Bag”.

怎么使用?
Multiset有一个有用的功能,就是跟踪每种对象的数量,所以你可以用来进行数字统计。

以前这么做统计:
Map<MyClass,Integer> objectCounts = new HashMap<MyClass,Integer>();
 
public void incrementCount(MyClass obj) {
  Integer count = objectCounts.get(obj);
  if (count == null) {
    objectCounts.put(obj,0);
  } else {
    objectCounts.put(obj,count++);
  }
}
 
 
public int getCount(MyClass obj) {
  Integer count = objectCounts.get(obj);
  if (count == null) {
    return 0;
  } else {
    return count;
  }
}

有点麻烦?好吧,试试Multiset:
Multiset<MyClass> myMultiset = HashMultiset.create();
 
MyClass myObject = new MyClass();
myMultiset.add(myObject);
myMultiset.add(myObject);  // add it a second time.
 
System.out.println(myMultiset.count(myObject)); // 2
myMultiset.remove(myObject);
System.out.println(myMultiset.count(myObject)); // 1


简单多了吧,其实不仅可以一次添加删除一个,也可以一次多个:
Multiset<MyClass> myMultiset = HashMultiset.create();
 
MyClass myObject = new MyClass();
myMultiset.add(myObject,5); // Add 5 copies of myObject
System.out.println(myMultiset.count(myObject)); // 5
myMultiset.remove(myObject,2); // remove 2 copies
System.out.println(myMultiset.count(myObject)); // 3


是不是很有用啊,其实Multiset还有很多其他实现,建议你读一下它的API说明:http://docs.guava-libraries.googlecode.com/git-history/v9.0/javadoc/com/google/common/collect/Multiset.html
2
3
分享到:
评论

相关推荐

    guava-11.0.2-API文档-中文版.zip

    标签:google、guava、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    guava-23.0-API文档-中文版.zip

    标签:google、guava、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    guava-18.0-API文档-中英对照版.zip

    对应Maven信息:groupId:com.google.guava,artifactId:guava,version:18.0 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    guava-24.1-jre-API文档-中英对照版.zip

    标签:google、guava、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    google开源项目guava.jar包

    谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...

    guava-26.0-android-API文档-中文版.zip

    标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    guava-30.1-jre.jar

    Guava是Google开发的一个开源Java库,包含了众多的实用工具类和集合框架,极大地提高了Java开发的效率。在本例中,我们关注的是"guava-30.1-jre.jar",这是一个针对Java运行环境(JRE)优化的Guava版本,版本号为...

    Google的Guava工具包

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

    guava-25.1-jre.jar

    google的guava工具包很实用,包括之前的字符串处理工具类的,还有大量的collection相关的

    最新版 guava-30.1-jre.jar

    最新版 guava-30.1-jre.jar

    guava-19.0 jar和sources

    Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,极大地丰富了标准库的功能。在Java开发中,Guava库被广泛使用,因为它包含了大量的集合框架、并发支持、缓存机制、字符串处理、I/O操作等多个...

    guava-31.1-jre.jar

    guava

    Guava常用类库 v33.0.0.zip

    Guava是Google开发的一个Java库,它包含许多Google核心库中的高级集合、缓存、原生类型支持、并发包、字符串处理、I/O等工具类。版本33.0.0是Guava的一个更新,提供了最新的功能改进和错误修复。在深入探讨Guava常用...

    guava-18.0(guava-18.0.jar和guava-18.0-sources.jar)

    Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,涵盖了集合、并发、I/O、字符串处理、数学运算等多个方面。这个压缩包包含的是Guava库的18.0版本,分为两个部分:`guava-18.0.jar`和`guava-18.0...

    guava-20.0-API文档-中文版.zip

    标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    guava-18.0-API文档-中文版.zip

    对应Maven信息:groupId:com.google.guava,artifactId:guava,version:18.0 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    guava-30.1.1-jre-API文档-中文版.zip

    赠送jar包:guava-30.1.1-jre.jar; 赠送原API文档:guava-30.1.1-jre-javadoc.jar; 赠送源代码:guava-30.1.1-jre-sources.jar; 赠送Maven依赖信息文件:guava-30.1.1-jre.pom; 包含翻译后的API文档:guava-30.1...

    guava-17.0-API文档-中文版.zip

    标签:google、guava、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    guava-32.1.3-android.jar

    javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享

    google Guava集合工具类(超实用)

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

Global site tag (gtag.js) - Google Analytics