Java8的流(Stream)是一種數據處理的新方式。它的出現大大簡化了集合框架的操作以及數據處理的流程。在Java8之前,我們需要使用循環或迭代器來處理集合或數組。而現在,我們可以使用流輕易地完成這些操作。流使得我們可以很容易地並行處理數據,從而提高程序的性能。本文將詳細介紹Java8中流的使用方法。
一、創建流
創建流有兩種方式:使用Stream介面中的of方法或使用集合的stream()方法。
Stream stream1 = Stream.of("Java", "Python", "C++", "C#"); List list = Arrays.asList("Java", "Python", "C++", "C#"); Stream stream2 = list.stream();
代碼中的stream1使用Stream介面中的of方法創建了一個字元串類型的流。stream2使用了List集合的stream方法創建了一個流。
二、中間操作
中間操作是指對流中的元素進行某種操作,但不會修改流中的數據。Java8中提供了多種中間操作方法,包括過濾、映射、排序等。
1、過濾操作
過濾操作是指根據某種條件過濾出流中符合條件的元素。在Stream中有一個filter方法可以完成此操作。
Stream stream = Stream.of("Java", "Python", "C++", "C#"); stream.filter(s -> s.startsWith("J")) .forEach(System.out::println);
代碼中的stream創建了一個包含4個元素的字元串類型流,filter方法過濾出以字母J開頭的元素並列印輸出。
2、映射操作
映射操作是指將流中的元素轉換成另一個流中的元素。在Stream中有一個方法map()可以完成此操作。
Stream stream = Stream.of("Java", "Python", "C++", "C#"); stream.map(s -> s.toUpperCase()) .forEach(System.out::println);
代碼中的stream創建了一個包含4個元素的字元串類型流,map方法將每個元素轉換成大寫字母並列印輸出。
3、排序操作
排序操作是指對流中的元素排序。在Stream中有一個方法sorted()可以完成此操作。
Stream stream = Stream.of("Java", "Python", "C++", "C#"); stream.sorted() .forEach(System.out::println);
代碼中的stream創建了一個包含4個元素的字元串類型流,sorted方法將元素進行升序排序並列印輸出。
三、最終操作
最終操作是指對流進行終止操作,例如將流轉換成集合或數組。Java8中提供了多種最終操作方法,包括forEach、toArray、collect等。
1、forEach()
forEach()方法是最常用的最終操作方法,它可以對流中的每個元素執行指定的操作,例如列印輸出。
Stream stream = Stream.of("Java", "Python", "C++", "C#"); stream.forEach(System.out::println);
代碼中的stream創建了一個包含4個元素的字元串類型流,forEach方法列印輸出了流中的每個元素。
2、toArray()
toArray()方法可以將流轉換成一個數組。
Stream stream = Stream.of("Java", "Python", "C++", "C#"); String[] array = stream.toArray(String[]::new); System.out.println(Arrays.toString(array));
代碼中的stream創建了一個包含4個元素的字元串類型流,toArray方法將流轉換成一個字元串數組並列印輸出。
3、collect()
collect()方法可以將流轉換成其他類型的集合,例如List、Set等。
Stream stream = Stream.of("Java", "Python", "C++", "C#"); List list = stream.collect(Collectors.toList()); System.out.println(list);
代碼中的stream創建了一個包含4個元素的字元串類型流,collect方法將流轉換成一個List並列印輸出。
四、總結
Java8的流是一種非常強大的數據處理方式,它可以大大簡化集合框架的操作以及數據流處理的流程。在本文中,我們介紹了Java8中流的創建、中間操作和最終操作。希望這些知識點對讀者有所幫助,能夠更好地理解Java8的流。
原創文章,作者:UZVJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137753.html