在看Zuul的源碼(org.springframework.cloud.netflix.zuul.util.RequestContentDataExtractor.java)時發現一個從來沒見過的MultiValueMap,點進去才知道這是Spring提供的一個key可以有多個Value的Map集合。
以前爲了實現這種效果在代碼裏聲明成類似結構Map<String, List<Object>> map = new HashMap<>()可以被替換了。因爲這個MultiValueMap本質上就是通過繼承Map加了泛型實現的,看源碼
測試代碼:
public static void main(String[] args) {
MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap();
multiValueMap.add("北京", "一中");
multiValueMap.add("北京", "二中");
multiValueMap.add("濟南", "一小");
multiValueMap.add("北京", "三中");
multiValueMap.add("濟南", "二小");
List<Object> list = new ArrayList<>();
list.add("雞蛋");
list.add("西紅柿");
list.add("辣椒");
multiValueMap.put("合肥", list);
multiValueMap.add("測試", "只有一個元素");
for (Object item : multiValueMap.keySet()) {
List<Object> listObj = multiValueMap.get(item);
System.out.println("Key:" + item + "--Value:" + listObj);
}
}
打印結果:
Key:北京--Value:[一中, 二中, 三中]
Key:濟南--Value:[一小, 二小]
Key:合肥--Value:[雞蛋, 西紅柿, 辣椒]
Key:測試--Value:[只有一個元素]
Over~~