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) {// 创建一个MultimapMultimap<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");// 打印MultimapSystem.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")); // 输出:trueSystem.out.println(multimap.containsKey("vegetable")); // 输出:false// 检查Multimap是否包含某个键值对System.out.println(multimap.containsEntry("fruit", "apple")); // 输出:trueSystem.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// 清空Multimapmultimap.clear();System.out.println(multimap.isEmpty()); // 输出:true
这些示例展示了如何创建 Multimap
,添加和删除元素,查询键和键值对,以及迭代 Multimap
中的元素。Guava 提供了多种 Multimap
实现,例如 ArrayListMultimap
、HashMultimap
、LinkedHashMultimap
、TreeMultimap
和 SetMultimap
,你可以根据需要选择适合的实现。