Java Stream API 的 map() 方法詳解及與 mapToint() 的比較
Java Stream API 提供了強大的數據處理能力,其中 map() 方法是進行數據轉換的重要工具。本文將深入探討 map() 方法的用法,并將其與 mapToInt() 方法進行對比。
map() 方法的核心功能是將 Stream 中的每個元素轉換為另一個元素,從而實現數據的轉換或提取。它接收一個函數作為參數,該函數作用于 Stream 中的每一個元素,并返回一個轉換后的值。這種轉換并非僅限于簡單的類型轉換,而是涵蓋了更廣泛的數據處理場景。
例如,假設我們有一個 Person 對象列表,每個對象包含 name 和 age 屬性。我們可以使用 map() 方法提取所有人的姓名,并將其轉換為一個字符串列表:
立即學習“Java免費學習筆記(深入)”;
List<String> names = persons.stream() .map(Person::getName) .collect(Collectors.toList());
這段代碼中,map(Person::getName) 將 persons 流中的每個 Person 對象映射到其 name 屬性的值,最終收集成一個 String 列表。類似地,我們也可以提取所有人的年齡,或者計算每個名字的長度:
這里 map(String::length) 將 words 流中的每個字符串映射到其長度,最終得到一個 Integer 列表。
mapToInt() 方法是 map() 方法的一個特例,它專門用于將 Stream 中的元素轉換為 int 類型。這在需要進行數值計算時非常有用,例如計算所有人的年齡總和:
int totalAge = persons.stream() .mapToInt(Person::getAge) .sum();
這段代碼利用 mapToInt(Person::getAge) 將 persons 流中的每個 Person 對象的 age 屬性轉換為 int 類型,然后使用 sum() 方法直接計算總和。這比先使用 map() 方法轉換,再進行數值計算更加高效簡潔。
因此,mapToInt() 方法針對 int 類型數據處理效率更高,而 map() 方法適用范圍更廣,可以處理各種類型的數據轉換。