map的特点是一个Key对应一个Value,MultiValueMap可以实现一个key对应多个value,可以替换Map> 的数据结构。
apache 和 spring 都有提供这个结构:
import org.apache.commons.collections.map.MultiValueMap;
import java.util.Collection;
public class TestMain
{
public static void main(String[] args) throws IOException
{
MultiValueMap mailMap = new MultiValueMap();
mailMap.put("number", "1");
mailMap.put("number", "30");
mailMap.put("name", "wang");
mailMap.put("card", "12344");
mailMap.put("card", "65432");
Collection mapcoll = null;
mapcoll = mailMap.getCollection("card");
Iterator ii = mapcoll.iterator();
while(ii.hasNext()){
String mailValue = (String) ii.next();
System.out.println(mailValue);
}
}
}
import org.springframework.util.MultiValueMap;
MultiValueMap stringMultiValueMap = new LinkedMultiValueMap<>();
stringMultiValueMap.add("早班 9:00-11:00", "周一");
stringMultiValueMap.add("早班 9:00-11:00", "周二");
stringMultiValueMap.add("中班 13:00-16:00", "周三");
stringMultiValueMap.add("早班 9:00-11:00", "周四");
stringMultiValueMap.add("测试1天2次 09:00 - 12:00", "周五");
stringMultiValueMap.add("测试1天2次 09:00 - 12:00", "周六");
stringMultiValueMap.add("中班 13:00-16:00", "周日");
//打印所有值
Set keySet = stringMultiValueMap.keySet();
for (String key : keySet) {
List values = stringMultiValueMap.get(key);
System.out.println(StringUtils.join(values.toArray()," ")+":"+key);
}
/**
* 用MultiValueMap接收前端提交的Form Data或Query String,可以接收相同的参数名的值到同一个list中
* @author XuJijun
* @param params
* @return
*/
@RequestMapping(value = "multiValueMap")
public Map> test2(@RequestParam MultiValueMap params) {
Map> resultMap = new HashMap<>();
resultMap = params;
return resultMap;
}