MultiValueMap和普通map有什么区别,为什么你上面的例子不用普通map
时间: 2023-12-16 07:35:23 浏览: 185
`MultiValueMap`是Spring框架中提供的一个接口,它继承了Java标准库中的`Map`接口,并提供了一种特殊的数据结构,用于存储一个键对应多个值的情况。而普通的`Map`接口只能存储一个键对应一个值的情况。
在使用`RestTemplate`发送POST请求时,如果使用普通的`Map`对象来存储`formdata`参数,每个参数只能对应一个值。而实际上,`formdata`请求可能包含多个值相同的参数,这时候就需要使用`MultiValueMap`来处理。
举个例子,如果使用普通的`Map`对象来存储参数,如下所示:
```java
Map<String, String> formData = new HashMap<>();
formData.put("param1", "value1");
formData.put("param2", "value2");
```
那么发送的请求将会是以下形式:
```
param1=value1¶m2=value2
```
而如果使用`MultiValueMap`对象来存储参数,如下所示:
```java
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("param1", "value1");
formData.add("param2", "value2");
formData.add("param2", "value3");
```
那么发送的请求将会是以下形式:
```
param1=value1¶m2=value2¶m2=value3
```
可以看到,使用`MultiValueMap`可以方便地处理一个参数对应多个值的情况。因此,在发送`formdata`形式的POST请求时,推荐使用`MultiValueMap`来存储参数。
阅读全文