MultiValueMap的循环读取操作

Posted 沛沛老爹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MultiValueMap的循环读取操作相关的知识,希望对你有一定的参考价值。

平时比较少接触MultiValueMap。昨天看到了一行代码:

MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();

一时间,技痒难耐。

根据百度的各位吃瓜群众的解释:MultiValueMap 是一个Key后面存值的方式是链表方式存在的。

简单说,就是一个Key里面可以Add多个值,不会被覆盖。

举个锤子:

param.add("phone", "111");
param.add("phone", "222");

如果是Map形式存储 的话,key =  phone的键值应该是“222”。

如果使用的是MultiValueMap。你可以简单理解为 phone的键值是["111","222"]。说明下,这个数据类型是List不是数组。这里只是简单描述存值。

作为MultiValueMap存值很方便,取值的时候咋办呢?

下面上个简单的循环读取方式(用了for嵌套),您可以试下,在小范围内用的话,应该还是可以的。

上一下测试代码:

    @Test
    public void testMultiValueMap() {

        MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
        param.add("phone", "111");
        param.add("phone", "222");
        param.add("temp_id", "temp_id1");
        param.add("param","param");
        param.add("param","param2");
        param.add("temp_id", "temp_id2");
        param.add("phone", "333");
        param.add("param","param3");

        System.out.println("======== 我是邪恶的分界线 ===========");

        for (String key : param.keySet()) {

            List<String> values = ((LinkedMultiValueMap<String, String>) param).get(key);
            System.out.println("key  : "+key);

            for (String value : Objects.requireNonNull(values)) {

                System.out.println( "value: " + value);
            }
        }
    }

输出结果如下所示:

基本上将所有的key和key值都进行了输出。

中间您可以根据需要加上您复杂的、晦涩的、难懂的逻辑代码了。

下面,请开始您的表演!

以上是关于MultiValueMap的循环读取操作的主要内容,如果未能解决你的问题,请参考以下文章

浅谈MultiValueMap

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

C#程序员经常用到的10个实用代码片段 - 操作系统

SpringBoot学习之MultiValueMap

java.lang.NoClassDefFoundError: org/springframework/util/MultiValueMap

常用python日期日志获取内容循环的代码片段