知識庫 / Spring RSS 訂閱

將 Map 轉換為 Spring MultiValueMap

Java Map,Spring
HongKong
4
11:09 AM · Dec 06 ,2025

1. 概述

本教程將演示如何將一個 <em >Map</em> 轉換為 Spring 中的 <em >MultiValueMap</em>,並通過一個清晰的示例進行理解。

在 Spring Framework 中,<em >MultiValueMap</em> 是一個專門的 map,它能夠存儲一個鍵對應多個值。它在處理 HTTP 請求參數、頭部以及其他需要一個鍵對應多個值的場景中非常有用。將標準 <em >Map</em> 轉換為 `MultiValueMap 常常是 Spring 應用中的一個常見需求。

2. 什麼是 MultiValueMap

MultiValueMap 是 Spring 提供的一個接口,它擴展了 Map<K, List<V>> 接口。它允許我們為單個鍵存儲多個值。

最常用的實現是 LinkedMultiValueMap

3. 將 Map 轉換為 Spring MultiValueMap 的方法

假設我們有一個 Map<String, List<String>>,並且想要將其轉換為 MultiMap<String, String>.

以下是如何操作:

我們應該確保我們的項目包含 Spring Framework。 如果我們使用 Maven,則將以下 依賴項添加到我們的 pom.xml 中:

<dependency>
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId>
    <version>6.1.9</version>
</dependency>

首先,我們將創建一個包含樣例文檔的 Map<String, List<String>>,其中包含一些數據:

Map<String, List<String>> map = new HashMap<>();
map.put("rollNo", Arrays.asList("4", "2", "7", "3"));
map.put("name", Arrays.asList("John", "Alex", "Maria", "Jack"));
map.put("hobbies", Arrays.asList("Badminton", "Reading novels", "Painting", "Cycling"));

3.1. 使用手動迭代

我們可以使用常規迭代將我們的 Map 轉換為 MultiValueMap

MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>();
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
    multiValueMap.put(entry.getKey(), entry.getValue());
}

上述代碼將一個 Map<String, List<String>> 轉換為一個 MultiValueMap<String, String>。 我們初始化一個新的 LinkedMultiValueMap ,並遍歷原始地圖中的每個條目,將每個鍵及其關聯的值列表添加到 MultiValueMap 中。

這種結構在 Spring MVC 中處理表單數據或帶有多個值關聯的單個鍵的查詢參數時特別有用。

3.2. 使用 `CollectionUtils.toMultiValueMap()

Spring Framework 提供了一個在 CollectionUtils 中的實用方法,可以直接將 Map<K, List<V>> 轉換為 MultiValueMap<K,V>

MultiValueMap<String, String> multiValueMap = CollectionUtils.toMultiValueMap(map);

3.3. 使用 Java 流

Java 流 API 也可以用於以更具函數式編程風格的方式進行轉換:

MultiValueMap<String, String> multiValueMap = map.entrySet()
  .stream()
  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedMultiValueMap::new));

這段代碼使用 Java Streams 將一個 Map<String, List<String>> 轉換為 MultiValueMap<String, String> 。它將 map 的條目收集到一個新的 LinkedMultiValueMap 中,並保持了原始 map 的鍵值結構。

4. 結論

在本文中,我們學習瞭如何將 Map 轉換為 MultiValueMap。 通過遵循上述步驟,我們可以輕鬆地在 Spring 應用中使用 MultiValueMap,從而使我們的代碼更具多功能性和易於管理,尤其是在處理複雜的數據結構時。

我們看到了多種方法,每種方法都有其優勢。 選擇最適合我們編碼風格和應用程序要求的方案非常重要。 這些方法將幫助我們高效地處理 Spring 應用中鍵映射到多個值的場景。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.