一、Map 是什麼?
Map 是一種常用的數據結構,用於存儲一組鍵值對,並能夠通過 key 查找對應的 value。在 Java 中,Map 是一個接口,在 Spring Boot 中也有很多用法。
Spring Boot 的 Map 主要用於處理兩個場景:配置文件和 HTTP 請求參數。在配置文件中,Map 通常用於存儲一組屬性和對應的值;在 HTTP 請求中,Map 用於存儲 query 參數和 form data。
二、Map 的基本使用
要創建一個 Map 對象,可以使用 Java 中的 HashMap、TreeMap 或者 LinkedHashMap。其中,HashMap 是最常用的,它的 key 是無序的,性能也比其他兩個高很多。
Map<String, Object> map = new HashMap<>();
map.put("name", "John");
map.put("age", 20);
map.put("gender", "male");
可以使用 get 方法通過 key 查找對應的 value:
String name = (String)map.get("name");
int age = (int)map.get("age");
String gender = (String)map.get("gender");
Map 還支持遍歷,可以使用 forEach 方法或者 Iterator 進行遍歷:
map.forEach((key, value) -> System.out.println(key + ": " + value));
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
三、Spring Boot 中的 Map
1、配置文件中的 Map
在 application.yml 或者 application.properties 配置文件中,可以使用 Map 存儲一組屬性和對應的值。例如:
my:
config:
map:
name: John
age: 20
gender: male
可以使用 @Value 註解和 ${} 佔位符來獲取 Map 中的值:
@Value("${my.config.map}")
private Map<String, Object> configMap;
也可以使用 @ConfigurationProperties 註解來綁定 Map:
@Configuration
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
private Map<String, Object> map;
// getter and setter
}
2、HTTP 請求參數中的 Map
在處理 HTTP 請求時,Map 常常用於存儲 query 參數和 form data。可以使用 @RequestParam 或者 @RequestBody 註解將 Map 綁定到方法參數中:
@GetMapping("/test")
public void test(@RequestParam Map<String, Object> params) {
// do something with params
}
@PostMapping("/test")
public void test(@RequestBody Map<String, Object> body) {
// do something with body
}
四、Map 的高級用法
1、Map 的常用操作
除了基本的 put、get、forEach 和遍歷操作外,Map 還支持很多其他的操作。例如,可以使用 containsKey、containsValue、remove、replace 等方法來操作 Map 中的元素。
map.containsKey("name"); // true
map.containsValue("female"); // false
map.remove("name");
map.replace("age", 20, 21);
2、Map 的排序
默認情況下,Map 是按照插入順序存儲元素的。但是,如果需要對 Map 進行排序,可以使用 TreeMap,在創建 TreeMap 時指定一個 Comparator。例如,按照 key 升序排序:
Map<String, Object> map = new TreeMap<>((s1, s2) -> s1.compareTo(s2));
3、Map 的合併
在處理配置文件時,可能需要將多個 Map 合併成一個。可以使用 Stream 的 reduce 方法來進行合併操作。
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "John");
map1.put("age", 20);
Map<String, Object> map2 = new HashMap<>();
map2.put("gender", "male");
Map<String, Object> result = Stream.of(map1, map2)
.reduce(new HashMap<>(), (m1, m2) -> {
m1.putAll(m2);
return m1;
});
// result: {name=John, age=20, gender=male}
五、總結
本文主要介紹了 Spring Boot Map 的基本使用和高級用法,包括在配置文件中使用 Map、處理 HTTP 請求參數中的 Map、常用操作、排序和合併等。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/155062.html