一、Stream流map方法遍歷
Stream流是Java 8引入的一項新特性,它讓處理集合數據變得更加簡單和快速,Stream流的map方法是其中比較重要的一個方法之一,使用map方法可以對集合中的每個元素進行映射處理,將原集合轉化為另一個新集合。
首先,我們可以通過Stream流的map方法對一個List集合進行遍歷操作,以下是一段示例代碼:
List list = new ArrayList(); list.add("apple"); list.add("banana"); list.add("orange"); Stream stream = list.stream().map(s -> s.toUpperCase()); stream.forEach(System.out::println);
上述代碼中,我們通過map方法遍歷了一個List集合併將其中的每個元素轉化為大寫形式,最後使用forEach方法輸出轉化後的結果。
通過這個例子,我們可以看到Stream流的map方法可以很方便地遍歷集合併對元素進行處理,使得代碼更加簡潔明了。
二、Stream流map方法作用
使用map方法可以將集合中的每一個元素按照指定的映射關係轉換成另一個元素(可能是同一類型,也可能不是),而不會改變原始集合中的元素,從而實現了集合的轉換。
以下是一個示例代碼,將一個數字List中的每個元素轉化成其平方數:
List list = Arrays.asList(1, 2, 3, 4, 5); List resultList = list.stream().map(x -> x * x).collect(Collectors.toList()); System.out.println(resultList);
輸出結果為[1, 4, 9, 16, 25],可以看到我們成功地將原List中的每個元素平方,並將結果存放在了新的List中。
通過這個例子,我們可以看到Stream流的map方法可以幫助我們對集合中的元素進行轉換,同時實現了集合轉換的功能。
三、Stream流map方法屬性類型轉換
Stream流的map方法還可以用來進行不同類型之間的轉換,將一個對象集合轉換成另一個類型的對象集合。
以下是一個示例代碼,將Person對象的列錶轉化為String類型的列表:
List people = new ArrayList(); people.add(new Person("Tom", 18)); people.add(new Person("Jerry", 20)); List result = people.stream().map(Person::getName).collect(Collectors.toList()); System.out.println(result);
上述代碼的輸出結果為[Tom, Jerry],可以看到我們成功地將Person對象中的name屬性轉換成字元串類型,同時將轉換後的結果存放在新的String列表中。
通過這個例子,我們可以看到map方法的另一個重要作用就是可以將一個類型的屬性轉換成另一個類型的屬性,在某些場景下,這種類型轉換是十分必要的。
四、Stream流map方法收集兩個欄位
在某些場景下,我們需要將一個Java對象轉換為另一個對象,並且同時需要將原始對象中的多個屬性收集到新的對象中。
以下是一個示例代碼,將一個List中的Person對象轉化為Map類型的「姓名-年齡」的鍵值對:
List people = new ArrayList(); people.add(new Person("Tom", 18)); people.add(new Person("Jerry", 20)); Map result = people.stream().collect(Collectors.toMap(Person::getName, Person::getAge)); System.out.println(result);
上述代碼的輸出結果為{Tom=18, Jerry=20},可以看到我們成功地將Person對象中的name屬性和age屬性轉換成了Map中的鍵值對。
通過這個例子,我們可以看到Stream流的map方法不僅可以轉換集合中的元素,還可以將多個屬性收集到新的對象中。
五、Stream流map方法對象強轉
在集合中存儲的元素類型可能是父類或介面類型,而實際元素類型可能是子類,我們需要將元素強轉為子類才能獲得子類才有的某些屬性或方法,這時可以使用Stream流的map方法進行對象的強轉。
以下是一個示例代碼,將一個List中的Fruit對象轉換成Apple類型的對象:
List fruits = new ArrayList(); fruits.add(new Apple("red", 150)); fruits.add(new Apple("green", 130)); List apples = fruits.stream().filter(fruit -> fruit instanceof Apple).map(fruit -> (Apple) fruit).collect(Collectors.toList()); System.out.println(apples);
上述代碼的輸出結果為[Apple{color=’red’, weight=150}, Apple{color=’green’, weight=130}],可以看到我們成功地將原始List中的Fruit對象轉換成了Apple類型的對象。
通過這個例子,我們可以看到Stream流的map方法可以很方便地對集合中的元素進行強制類型轉換,使得代碼更加簡化。
六、Stream流reduce方法
Stream流的reduce方法可以將流中的元素進行累加或計算,並將計算結果返回。
以下是一個示例代碼,將一個數字List中的每個元素相加得到最終的結果:
List numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream().reduce((a, b) -> a + b).get(); System.out.println(sum);
上述代碼的輸出結果為15,可以看到我們獲取了List中所有數字元素的和。
通過這個例子,我們可以看到Stream流的reduce方法可以很方便地對集合中的元素進行累加或計算,是一種很有用的方法。
七、Stream流的方法
除了map和reduce方法外,Stream流還有很多實用的方法。
其中包括filter方法、sorted方法、distinct方法、limit方法和skip方法等。filter方法可以根據指定條件過濾集合中的元素,sorted方法可以對元素進行排序,distinct方法可以去重,limit方法可以限制元素數量,skip方法可以跳過指定數量的元素。
以下是一個示例代碼,使用Stream流的filter方法進行集合元素的過濾,並使用limit方法限制結果數量:
List people = Arrays.asList("Tom", "Jerry", "Jane", "Lucy"); List result = people.stream().filter(p -> p.length() == 3).limit(2).collect(Collectors.toList()); System.out.println(result);
上述代碼的輸出結果為[Tom, Jane],可以看到我們成功地過濾了符合條件的元素,並限制了結果數量。
通過這個例子,我們可以看到Stream流還有很多實用的方法,可以根據實際需求使用相應方法,使得代碼更加高效和簡潔。
八、Stream流常用方法map
上面我們已經介紹了Stream流的map方法,map方法是Stream流中最常用的方法之一,因此我們在這裡再次強調一下。
Stream流的map方法是對集合中的每個元素進行轉換處理,並返回一個新的集合,相當於對集合進行了一次映射。
以下是一個示例代碼,使用Stream流的map方法將字元串集合中的每個字元串轉換成大寫形式:
List list = Arrays.asList("apple", "banana", "orange"); List result = list.stream().map(s -> s.toUpperCase()).collect(Collectors.toList()); System.out.println(result);
上述代碼的輸出結果為[APPLE, BANANA, ORANGE],可以看到我們成功地將原始字元串集合中的每個元素轉換成了大寫形式。
通過這個例子,我們可以看到Steam流的map方法是對集合中的元素進行轉換的最常用方法之一,是Java 8中一個非常實用的特性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/160545.html