LinkedMultiValueMap源码解析
最近在看HttpEntity的源码的时候,发现有一个类用到了MultiValueMap这个类,该类属于spring框架中自带的类型,首先看看它的基类实现:
1 | public interface MultiValueMap<K, V> extends Map<K, List<V>> { |
发现它的类型就是继承自Map,只不过在它的基础上做了一层封装,便于后续的管理调用,再来看看LinkedMultiValueMap的实现:
1 | public class LinkedMultiValueMap<K, V> implements MultiValueMap<K, V>, Serializable, Cloneable { |
可以看到,它的本质上还是一个Map,只不过存放的value是List类型的而已。
其中addAll 方法有多个重载,支持实现MultiValueMap接口类型的和参数为K,V类型的方法。
而它的add函数运用了lamda表达式,当值为null的时候,会new一个LinkedList去填充,里面的默认属性为空。
其他的实现方法都与Map的操作不相伯仲。
总结
如果在遇到有单个key和多个value的情况下,可以采用LinkedMultiValueMap这种方法来实现我们的需求。