Java 8 中引入了新的 Stream API,它提供了一種更有效率、簡潔的方式來處理集合資料。 Stream API 提供了各種方法來處理資料和轉換,其中 collect()
方法是一個非常重要且常用的方法之一。本文將介紹如何使用 collect()
方法將集合收集為 Map 對象,並提供對應的程式碼範例。
在 Java 8 之前,如果我們想將一個集合轉換為 Map 對象,需要使用繁瑣的遍歷和新增操作。而在 Java 8 中使用 Stream API 的 collect()
方法可以更方便地實現這個目標。
collect()
方法是 Stream API 的終止操作之一,它接收一個 Collector
參數,用於指定收集的方式。在收集為 Map 物件時,我們可以使用 Collectors.toMap()
方法來進行收集。
下面是使用collect()
方法將集合收集為Map 物件的範例程式碼:
import java.util.*; import java.util.stream.Collectors; public class StreamCollectExample { public static void main(String[] args) { List<String> fruits = Arrays.asList("apple", "banana", "orange"); Map<String, Integer> fruitLengthMap = fruits.stream() .collect(Collectors.toMap( fruit -> fruit, // Key 映射函数 fruit -> fruit.length() // Value 映射函数 )); System.out.println(fruitLengthMap); } }
在上述程式碼中,我們首先建立了一個包含三個水果的集合fruits
,然後透過stream()
方法將其轉換為一個流。接著使用 collect()
方法並傳入 Collectors.toMap()
方法作為參數,該方法接收兩個 lambda 表達式參數,用於指定 Key 和 Value 的映射函數。
在我們的範例中,Key 映射函數是fruit -> fruit
,即將水果作為Key;Value 映射函數是fruit -> fruit.length()
,即將果實的長度作為Value。最後,collect()
方法將流中的元素按照指定的映射函數進行處理,並傳回一個 Map 物件。
輸出結果如下:
{orange=6, banana=6, apple=5}
可以看到,最終我們獲得了一個包含水果及其長度的 Map 物件。
除了基本的收集功能,Collectors.toMap()
方法也提供了一些其他的參數。例如,我們可以指定當存在重複的 Key 時應該如何處理,透過傳入一個合併函數來解決衝突。
下面是一個帶有Key 衝突處理的範例程式碼:
import java.util.*; import java.util.stream.Collectors; public class StreamCollectExample { public static void main(String[] args) { List<String> fruits = Arrays.asList("apple", "banana", "orange", "apple"); Map<String, Integer> fruitLengthMap = fruits.stream() .collect(Collectors.toMap( fruit -> fruit, // Key 映射函数 fruit -> fruit.length(), // Value 映射函数 (length1, length2) -> length1 // Key 冲突处理函数 )); System.out.println(fruitLengthMap); } }
在上述程式碼中,我們在toMap()
方法的第三個參數位置上傳入了一個合併函數(length1, length2) -> length1
。函數會在遇到重複的 Key 時選擇保留第一個 Key,並忽略後續的 Key。
輸出結果如下:
{orange=6, banana=6, apple=5}
可以看到,在 Key 衝突時,只保留了第一個出現的 Key,其他的 Key 被忽略。
透過使用Stream API 的collect()
方法,我們可以非常方便地將集合收集為Map 對象,並且還可以自訂Key 和Value 的映射函數以及處理衝突的方式。這樣我們能夠更靈活地處理集合數據,提高程式碼的可讀性和效率。
以上就是關於 Java 8 中使用 collect()
方法將集合收集為 Map 物件的介紹和範例程式碼。希望本文能對您理解 Stream API 的使用有所幫助。
以上是Java 8中的Stream API:如何使用collect()方法將集合收集為Map對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!