Multimap是guava中一个有用的工具类,下面我来介绍一下。
由来:
你是不是经常需要一个这样的数据结构:
Map<String,List<MyClass>> myClassListMap test2
= new HashMap<String,List<MyClass>>()
自己实现太麻烦,你需要检查key是否存在,否则创建一个,最后代码成为这个样子:
void putMyObject(String key, Object value) {
List<Object> myClassList = myClassListMap.get(key);
if(myClassList == null) {
myClassList = new ArrayList<object>();
myClassListMap.put(key,myClassList);
}
myClassList.add(value);
}
比较痛苦,如果你希望检查List中的对象是否存在,删除一个对象,或者遍历整个数据结构,那么需要更多的代码。
guava来了:
Multimap<String,Object> myMultimap = ArrayListMultimap.create();
这里需要注意,所有的guava的集合都有create()方法,这个好处就是比较简单,你不用重复泛型信息了。
好了,开始使用Multimap了:
public class MutliMapTest {
public static void main(String... args) {
Multimap<String, String> myMultimap = ArrayListMultimap.create();
// Adding some key/value
myMultimap.put("Fruits", "Bannana");
myMultimap.put("Fruits", "Apple");
myMultimap.put("Fruits", "Pear");
myMultimap.put("Vegetables", "Carrot");
// Getting the size
int size = myMultimap.size();
System.out.println(size); // 4
// Getting values
Collection<string> fruits = myMultimap.get("Fruits");
System.out.println(fruits); // [Bannana, Apple, Pear]
Collection<string> vegetables = myMultimap.get("Vegetables");
System.out.println(vegetables); // [Carrot]
// Iterating over entire Mutlimap
for(String value : myMultimap.values()) {
System.out.println(value);
}
// Removing a single value
myMultimap.remove("Fruits","Pear");
System.out.println(myMultimap.get("Fruits")); // [Bannana, Pear]
// Remove all values for a key
myMultimap.removeAll("Fruits");
System.out.println(myMultimap.get("Fruits")); // [] (Empty Collection!)
}
}
这里有一点你可能会疑惑,就是为何get方法返回的是一个collection而不是list,这是因为前者会更加有用。如果你需要基于multimap直接操作list或者set,那么可以使用在定义类型的时候使用子类名称:ListMultimap,SetMultimap和SortedSetMultimap。例如:
ListMutlimap<String,String> myMutlimap = ArrayListMultimap.create();
List<string> myValues = myMutlimap.get("myKey"); // Returns a List, not a Collection.
好了,基本就是这样,你可以参考API获取更多信息:
http://docs.guava-libraries.googlecode.com/git-history/release09/javadoc/com/google/common/collect/Multimap.html
分享到:
相关推荐
例如,它包含Multiset(多集合)和Multimap(多映射)这样的数据结构,可以方便地处理多值关联的情况。Guava还引入了ImmutableCollection(不可变集合),确保集合一旦创建就无法修改,提高了代码的安全性。 在并发...
Guava是Google开发的一个Java库,它包含许多Google核心库中的高级集合、缓存、原生类型支持、并发包、字符串处理、I/O等工具类。版本33.0.0是Guava的一个更新,提供了最新的功能改进和错误修复。在深入探讨Guava常用...
Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,涵盖了集合、并发、I/O、字符串处理、数学运算等多个方面。这个压缩包包含的是Guava库的18.0版本,分为两个部分:`guava-18.0.jar`和`guava-18.0...
Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...
1. **集合框架增强**:Guava 提供了丰富的集合类,如 Multiset(多集合)、Multimap(多映射)、Immutable collections(不可变集合)等,这些集合在功能和性能上都优于 Java 标准库中的集合。 2. **缓存**:Guava ...
标题中的“guava-use:使用谷歌guava工具包”表明我们即将探讨的是Google提供的Guava库,这是一个广泛使用的Java库,包含了许多实用的工具类和集合框架的扩展。Guava库旨在提高Java开发的效率,提供了如缓存、并发...
Guava 提供了丰富的集合类,如 Multiset(多集)、Multimap(多映射)和 Table(表格)。它们允许开发者处理更复杂的数据结构。例如,Multiset 可以统计元素出现的次数,Multimap 允许一个键关联多个值,Table 则...
Google Guava是Google开发的一个开源Java库,它包含了一系列高级且实用的集合类、缓存机制、并发工具、字符串处理、I/O工具等,极大地提升了Java开发者的工作效率。Guava的目标是通过提供一系列现代实用工具,帮助...
AssertJ Guava是一个专门针对Google Guava库中的数据结构和类型,如Multimap、Table、ByteSource以及Optional等,设计的断言库。它扩展了AssertJ的核心功能,使得在进行单元测试时,能够对Guava类型的数据进行更方便...
**Guava集合框架** Guava提供了丰富的集合类,如Multiset(多集)、Multimap(多映射)、ImmutableCollection(不可变集合)等,它们在功能上比Java内置的集合类更为强大。例如,Multiset允许元素有多个计数值,而...
Guava 是由 Google 开发的一个 Java 库,提供了许多基础工具类,如集合、缓存、原生类型支持、并发库、字符串处理等。Guava_Web 可能是 Guava 库的扩展或一个使用 Guava 的特定Web框架集成。 【描述】"番石榴网页...
Guava是Google为Java平台设计的一个开源库,它极大地扩展了Java的标准库,尤其是在集合、缓存、并发和I/O等方面。Guava的核心特性包括: 1. **集合框架增强**:Guava提供了丰富的集合类,如Multiset(多集)、...
Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...
1. **集合类**:Guava提供了丰富的集合类扩展,例如`ImmutableList`、`ImmutableSet`、`Multiset`、`Multimap`等,这些集合类不仅提供了更好的性能,还增加了更多的灵活性。 2. **缓存机制**:Guava内置了强大的缓存...
Google Guava 是一个由Google提供的开源Java库,它包含了许多强大的工具类和集合类,这些类可以帮助开发者更高效地编写Java代码。Guava的目标是提供一种更加简洁、优雅的方式来处理常见的编程任务,并且在很多情况下...
Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...
阅读优秀的代码也是十分有效的提升番石榴:Google的Java核心类库 Guava是Google提供的一组Java核心类库,包括新的集合框架(例如multimap和multiset),不可变集合(不可变集合),图形库(图形库),函数(函数类型...
《谷歌Guava库详解》 谷歌Guava,全称为Google Guava,是Google推出的一款Java库,它包含一系列基础工具类,旨在简化Java开发工作,提高代码效率和可维护性。Guava的核心特性包括集合框架、缓存、原始类型支持、...
Guava是Google开发的一个Java库,它提供了许多基础工具,如集合、缓存、原生类型支持、并发库、字符串处理、I/O等。Guava的目的是为了简化Java开发,提高代码质量和性能。本篇文章将深入探讨Guava的学习,包括最佳...
1. **集合框架增强**:Guava提供了如Multiset(多集合)、Multimap(多映射)和Table(表格)等高级数据结构,它们在处理复杂数据关系时特别有用。例如,Multiset允许元素有多个计数,而Multimap则允许一个键对应多...