Java Stream流中的map()方法和mapToInt()方法有何區別及應用?

Java Stream流中的map()方法和mapToInt()方法有何區別及應用?

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 列表。類似地,我們也可以提取所有人的年齡,或者計算每個名字的長度:

List<Integer> Lengths = words.stream()                              .map(String::length)                              .collect(Collectors.toList());

這里 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() 方法適用范圍更廣,可以處理各種類型的數據轉換。

以上就是Java Stream流中的map()方法和mapToInt()方法有何

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享