如何在Java 中將列表轉換為映射:最佳方法
在Java 中將列表轉換為映射是一項常見任務,可以透過多種方式實現。一種方法是迭代列表並手動填充映射。但是,有更有效的方法可以使用內建 Java 功能來執行此轉換。
基於流的方法(Java 8 或更高版本)
使用Java 8, Stream API 提供了一種將List 轉換為Map 的簡潔且高效能的方法。此方法利用 Collectors.toMap() 方法:
Map<Integer, String> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));
這裡,Item::getKey lambda 函數會擷取清單中每個元素的鍵,而 item -> 則擷取清單中每個元素的鍵。 item lambda 檢索值。
使用循環的手動方法
對於Java 8 之前的版本或如果流不適合,可以使用手動方法:
List<Object[]> results; Map<Integer, String> resultsMap = new HashMap<>(); for (Object[] o : results) { resultsMap.put((Integer) o[0], (String) o[1]); }
這種方法涉及迭代列表並手動提取鍵和值對,這可能比基於流的方法。
對非雙射函數使用二元運算子
如果映射函數不是雙射的(即多個值可以映射到同一個鍵) ),二元運算子可用於合併重複的鍵值。例如,如果我們要找每個唯一鍵的值的總和:
Map<String, Integer> map = intList.stream().collect(toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));
這裡,二元運算子 Integer::sum 提供了合併重複鍵值的邏輯。
結論
雖然將List 轉換為Map 的最佳方法取決於特定要求,但使用Stream推薦使用Collectors.toMap() 的API,因為它的效率和簡潔性。手動方法可以在舊版的 Java 中或當流不適用時使用。
以上是如何有效率地將Java清單轉換為Map?的詳細內容。更多資訊請關注PHP中文網其他相關文章!