MultiValueMap的特点是一个key键可以对应多个键值,但有一点困扰了我,就是MultiValueMap同时提供了put(key,List<>)与addAll(key,List<>)方法,它们有什么区别呢? 首先来看下java文档 put()
V put(K key, V value);
译文: 将指定的值与映射中的指定键关联(可选操作)。如果映射之前包含键的映射,则旧值将被指定的值替换。(当且仅当m. containskey (k)返回true时,表示映射m包含键k的映射。)
addAll()
void addAll(K key, List<? extends V> values);
译文: 将给定列表中的所有值添加到给定键的当前值列表中。
这里已经说明:put()方法是直接替换,addAll()方法是继续添加
测试案例:
@Test
public void addMultiValueMap(){
MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>();
ArrayList<String> list1 = new ArrayList<>();
list1.add("aa");
list1.add("bb");
ArrayList<String> list2 = new ArrayList<>();
list2.add("cc");
ArrayList<String> list3 = new ArrayList<>();
list3.add("dd");
multiValueMap.put("key1", list1);
multiValueMap.put("key1", list2);
multiValueMap.put("key1", list3);
System.out.println(multiValueMap.get("key1"));
multiValueMap.addAll("key2", list1);
multiValueMap.addAll("key2", list2);
multiValueMap.addAll("key2", list3);
System.out.println(multiValueMap.get("key2"));
}
输出结果
|