MultiValueMap的使用和理解
源代码
MultiValueMap<String, String> multiValueMap =new LinkedMultiValueMap<>();
multiValueMap.add("aa","aa");
multiValueMap.add("aa","bb");
multiValueMap.add("aa","cc");
multiValueMap.add("aa","dd");
multiValueMap.add("aa","ff");
Set<Map.Entry<String, List<String>>> entries = multiValueMap.entrySet();
for (Map.Entry<String, List<String>> entry : entries) {
System.out.println("key:"+entry.getKey()+"\t"+"value:"+entry.getValue());
}
打印结果
key:aa value:[aa, bb, cc, dd, ff]
用法和常规的map集合差不多只是通过同一个key插入不会被替换 会被连续的存储起来
这里用了多态的形式进行赋值,使用了LinkedMultiValueMap
在LinkedMultiValueMap的构造方法中覆盖了父类的集合
在LinkedMultiValueMap 的add方法实际是用的父类MultiValueMapAdapter的方法
如果当前集合不存在该元素则会创建一个LinkedList用来存储多个value ,反之集合中有这个key的话就会插入到对应value 的LinkedList集合中
注意:
通过key找到的值是集合
在LinkedMultiValueMap源码中并没有对并发进行处理所以这个集合存在着线程安全问题,并发条件下需要对其处理,或封装,也可以其他的集合代替来达到需求需要