在處理 Java 中的資料結構時,將清單轉換為對應是一種常見的轉換。有多種方法可以實現這種轉換,最佳方法取決於特定要求和使用的 Java 版本。
將列表轉換為映射的傳統方法涉及手動迭代遍歷列表並將值分配給地圖。例如:
List<Object[]> results; Map<Integer, String> resultsMap = new HashMap<>(); for (Object[] o : results) { resultsMap.put((Integer) o[0], (String) o[1]); }
雖然這種方法有效,但它可能很乏味且冗長,尤其是對於較大的清單。
使用 Java 8, Streams API 提供了更簡潔、更有效率的將清單轉換為映射的方法。 Collectors 類別提供了多種簡化資料操作的方法,包括 toMap()。此方法接受兩個參數:
你可以使用toMap() 如下:
List<Item> list = IntStream.rangeClosed(1, 4) .mapToObj(Item::new) .collect(Collectors.toList()); // [Item [i=1], Item [i=2], Item [i=3], Item [i=4]] Map<String, Item> map = list.stream() .collect(Collectors.toMap(Item::getKey, item -> item));
在這個例子中,按鍵映射函數是item::getKey,值映射函數為item -> item.
toMap()方法也可以採用第三個參數,即二元運算符,用於在存在重複鍵時組合值:
List<Integer> intList = Arrays.asList(1, 2, 3, 4, 5, 6); Map<String, Integer> map = intList.stream() .collect(toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));
在這種情況下,二元運算子是Integer::sum,它將重複鍵的值相加。結果是一個映射,其中鍵是除以 3 時的餘數,值是原始值的總和。
將清單轉換為映射的最佳方法Java 取決於特定要求和使用的 Java 版本。對於傳統轉換,可以使用手動循環。為了更有效率、更簡潔的轉換,尤其是在 Java 8 及更高版本中,Streams API 和 Collectors.toMap() 方法提供了強大的替代方案。
以上是Java中如何有效率地將List轉換為Map?的詳細內容。更多資訊請關注PHP中文網其他相關文章!