Guava 库中的 `Multimap` 是一个允许一个键对应多个值的集合 Guava `Multimap` 的基本代码示例:

Guava 库中的 Multimap 是一个允许一个键对应多个值的集合。以下是一些使用 Guava Multimap 的基本代码示例:

引入 Guava 库

确保你的项目中已经添加了 Guava 库的依赖。如果你使用 Maven,可以在 pom.xml 文件中添加以下依赖:

xml 复制代码
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version> <!-- 请使用最新的版本号 -->
</dependency>

创建和添加元素

java 复制代码
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);
    }
}

查询和获取值

java 复制代码
        // 根据键查询值
        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

删除元素

java 复制代码
        // 删除一个键值对
        multimap.remove("fruit", "apple");
        System.out.println(multimap.get("fruit")); // 输出:[banana, cherry]

        // 删除所有与某个键关联的值
        multimap.removeAll("color");
        System.out.println(multimap.keySet()); // 输出:[fruit]

元素迭代

java 复制代码
        // 重新添加元素以进行迭代演示
        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

其他操作

java 复制代码
        // 获取所有键的集合
        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,你可以根据需要选择适合的实现。

相关推荐
深蓝AI20 分钟前
Python 子进程树:父进程被杀后,孙进程为何还在跑?
python
心祭丫丫42 分钟前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
爱你真是太好了1 小时前
Skill 索引瘦身与渐进加载
python
贾公子1 小时前
检测链路的容量规划——用 Little's Law 算清 QPS、并发与积压
后端·python
露天赏雪1 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力1 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力1 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
ATMQuant2 小时前
量化策略开发08:Lasso因子选择 - 因子动物园的断舍离
python·量化交易·lasso·vnpy·多因子选股
yeccheng3 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀3 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf