Guava 库中的 Multimap
是一个允许一个键对应多个值的集合。以下是一些使用 Guava Multimap
的基本代码示例:
引入 Guava 库
确保你的项目中已经添加了 Guava 库的依赖。如果你使用 Maven,可以在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version> <!-- 请使用最新的版本号 -->
</dependency>
创建和添加元素
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
public class MultimapExample {
public static void main(String[] args) {
// 创建一个Multimap
Multimap<String, String> multimap = ArrayListMultimap.create();
// 添加元素
multimap.put("fruit", "apple");
multimap.put("fruit", "banana");
multimap.put("color", "red");
multimap.put("color", "blue");
multimap.put("fruit", "cherry");
// 打印Multimap
System.out.println(multimap);
}
}
查询和获取值
// 根据键查询值
System.out.println(multimap.get("fruit")); // 输出:[apple, banana, cherry]
System.out.println(multimap.get("color")); // 输出:[red, blue]
// 检查Multimap是否包含某个键
System.out.println(multimap.containsKey("fruit")); // 输出:true
System.out.println(multimap.containsKey("vegetable")); // 输出:false
// 检查Multimap是否包含某个键值对
System.out.println(multimap.containsEntry("fruit", "apple")); // 输出:true
System.out.println(multimap.containsEntry("fruit", "orange")); // 输出:false
删除元素
// 删除一个键值对
multimap.remove("fruit", "apple");
System.out.println(multimap.get("fruit")); // 输出:[banana, cherry]
// 删除所有与某个键关联的值
multimap.removeAll("color");
System.out.println(multimap.keySet()); // 输出:[fruit]
元素迭代
// 重新添加元素以进行迭代演示
multimap.put("color", "red");
multimap.put("color", "blue");
// 迭代Multimap的键
for (String key : multimap.keySet()) {
System.out.println("Key: " + key);
for (String value : multimap.get(key)) {
System.out.println("Value: " + value);
}
}
// 输出:
// Key: fruit
// Value: banana
// Value: cherry
// Key: color
// Value: red
// Value: blue
其他操作
// 获取所有键的集合
System.out.println(multimap.keys()); // 输出:[fruit, color]
// 获取Multimap的大小(键值对的总数)
System.out.println(multimap.size()); // 输出:4
// 清空Multimap
multimap.clear();
System.out.println(multimap.isEmpty()); // 输出:true
这些示例展示了如何创建 Multimap
,添加和删除元素,查询键和键值对,以及迭代 Multimap
中的元素。Guava 提供了多种 Multimap
实现,例如 ArrayListMultimap
、HashMultimap
、LinkedHashMultimap
、TreeMultimap
和 SetMultimap
,你可以根据需要选择适合的实现。