LinkedMutiValueMap的使用(一个key对应多个value)

LinkedMutiValueMap来自Spring的 org.springframework.util包下,可以一个key对应多个value。

LinkedMutiValueMap的value统一用LinkedList保存,哪怕这只是插入一个字符串。

1. 添加数据

 MultiValueMap map = new LinkedMultiValueMap();
 //添加一个Key对应一个Value,
 map.add("key1", "value");
 // 添加一个Key对应多个Value,以list的形式添加
 map.add("key2", Lists.newArrayList("value1", "value2", "value3"));
 //设置一个Key对应一个Value
 map.set("key3", "value");
 // 设置一个Key对应多个Value,以list的形式添加
 map.set("key4", Lists.newArrayList("value1", "value2", "value3"));
 //打印输出value
 for (int i = 1; i <= 4; i++) {
    System.out.println("key" + i + "=" + map.get("key" + i));
 }

输出结果如下:

key1=[value]
key2=[[value1, value2, value3]]
key3=[value]
key4=[[value1, value2, value3]]

2. 当多个value插入到同一个key时

 MultiValueMap map = new LinkedMultiValueMap();
 map.add("key1", "value");
 map.add("key1", "new_value");
 map.set("key2", "value");
 map.set("key2", "new_value");
 System.out.println(map.get("key1"));
 System.out.println(map.get("key2"));

输出结果如下:

[value, new_value]
[new_value]

当使用add方法时,当key存在时会直接在原value所在的linkedlist上添加新的value;在使用set方法时,则会将原来的value覆盖,创建一个新的list。value为list时同理。

add、set方法源码如下:

    public void add(K key, @Nullable V value) {
        List<V> values = (List)this.targetMap.computeIfAbsent(key, (k) -> {
            return new LinkedList();
        });
        values.add(value);
    }
    
    public void set(K key, @Nullable V value) {
        List<V> values = new LinkedList();
        values.add(value);
        this.targetMap.put(key, values);
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值