首頁 > Java > java教程 > 如何有效率地將Java清單轉換為Map?

如何有效率地將Java清單轉換為Map?

Susan Sarandon
發布: 2024-11-30 02:53:11
原創
522 人瀏覽過

How Can I Efficiently Convert a Java List to a Map?

如何在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板