在Java開發中,經常需要將List集合轉換為Map集合,特別是當需要使用List中某個字段的值作為Map的鍵時。本文將演示如何高效地將包含鍵值對的List轉換為Map,并以List中特定字段的值作為Map的鍵。
假設有一個List,其元素是Map,每個Map包含”id”和”name”兩個字段,例如:[{“id”: 2, “name”: “san”}, {“id”: 3, “name”: “si”}]。目標是將此List轉換為一個Map,其中鍵是每個Map中”id”字段的值(轉換為字符串類型),值是對應的整個Map。最終的Map結構應為:”2″: {“id”: 2, “name”: “san”}, “3″:{“id”: 3, “name”: “si”}。
Java 8的Stream API可以高效地實現此轉換。以下代碼片段演示了如何操作:
立即學習“Java免費學習筆記(深入)”;
import java.util.*; import java.util.stream.*; public class ListToMap { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> item1 = new HashMap<>(); item1.put("id", 2); item1.put("name", "san"); list.add(item1); Map<String, Object> item2 = new HashMap<>(); item2.put("id", 3); item2.put("name", "si"); list.add(item2); Map<String, Map<String, Object>> map = list.stream() .collect(Collectors.toMap( item -> String.valueOf(item.get("id")), item -> item )); System.out.println(map); } }
代碼首先創建一個包含兩個Map的List。然后,使用stream().collect(Collectors.toMap(…))方法將List轉換為Map。Collectors.toMap方法接受兩個參數:第一個參數是一個函數,從List中的每個Map中提取鍵值(”id”字段的值,并轉換為String類型);第二個參數是一個函數,返回Map的值(整個Map)。生成的Map以String類型的”id”作為鍵,對應的Map作為值。
這段代碼清晰地展示了如何利用Java 8 Stream API高效地將List轉換為Map,并使用List中指定字段作為Map的鍵,方便地組織和訪問數據。