其實只是純粹解釋從底開始~JAVA程式碼~
真的是有乾乾的~
所以倒數中~
後面就真的要用springboot啦~
程式碼
package Stream;
import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Stream02 {
public static void main(String[] args) {
// 中間操作: distinct() / filter()
// List<Integer> number = Arrays.asList(13, 20, 20, 52, 60, 13, 40, 55, 60);
// number.stream()
// .distinct()//去重覆
// .filter(i -> i % 10 == 0)//條件
// .forEach(System.out::println);
//
// // 中間操作: filter()
// List<String> name = Arrays.asList("SHU", "KEN", "JING", "JOE");
// name.stream().filter(n -> n.startsWith("J")).forEach(System.out::println);
// // 中間操作:peek()
// Stream.of(1, 2, 3, 4, 5)
// .peek(i -> System.out.println("-->" + i))
// .forEach(i -> System.out.println(": " + i));
// // 中間操作:sorted()
// Stream.of(1, 2, 3, 4, 5, 4, 1, 6, 2).sorted().forEach(System.out::println);
//
// List<String> name2 = Arrays.asList("SHU", "KEN", "JING", "JOE");
// name2.stream()
// .sorted(Comparator.reverseOrder())//大到小
// .forEach(System.out::println);
// // 中間操作:limit() / skip()
// Stream.of(1, 2, 3, 4, 5, 4, 1, 6, 2)
// .sorted()
// .limit(3)
// .skip(3)
// .forEach(System.out::println);
// // 結束操作: count()
// long i = Stream.of(1, 2, 3, 4, 5, 4, 1, 6, 2).count();
// System.out.println("total: " + i);
// // 中間操作:max() / min()--> Integer / Optional
// Stream.of("a1", "a2", "a3", "a4")
// .map(s -> s.substring(1))
// .mapToInt(Integer::parseInt)// 轉成整數
//// .max()
// .min()// 返回Optional物件
// .ifPresent(System.out::println);// 執行Optional的方法
//
// IntStream s = IntStream.of(10, 20, 30, 40, 50);
// OptionalInt obj = s.max();
// if (obj.isPresent()) {
// System.out.println(obj.getAsInt());
// } else {
// System.out.println("-1");
// }
// // 結束操作:reduce()
// List<Integer> num = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// int sum = num.stream()
// //.reduce(0, (a,b)->a+b);
// .reduce(0, Integer::sum);
// System.out.println("SUM= " + sum);
//
// Optional<Integer> max = num.stream().reduce(Integer::max);
// System.out.println(max);
// // 中間操作:average() / sum()
int i1 = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).mapToInt(o -> o).sum();
System.out.println(i1);
OptionalDouble avg = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.mapToDouble(o1 -> o1)
.average();
System.out.println(avg);
}
}
顯示
解釋程式碼
這段Java程式碼演示了Java流(Stream)的各種中間操作和結束操作,讓我們逐段解釋:
distinct()
和 filter()
中間操作:
distinct()
移除重複的元素。filter()
根據條件過濾元素。filter()
中間操作:
filter()
根據條件過濾元素。peek()
中間操作:
peek()
可以在處理元素時執行附加的動作,這裡示範了如何印出處理過的元素。sorted()
中間操作:
sorted()
可以對元素進行排序,預設升冪排序。Comparator.reverseOrder()
可以改為降冪排序。limit()
和 skip()
中間操作:
limit()
限制元素的數量。skip()
跳過指定數量的元素。count()
結束操作:
count()
統計流中元素的數量。max()
和 min()
中間操作:
map()
轉換元素,然後使用 max()
或 min()
找到最大或最小的元素。max()
和 min()
返回的是 Optional
對象,需要使用 ifPresent()
等方法檢查是否有值。reduce()
結束操作:
reduce()
可以對元素執行歸納運算,例如計算總和。Integer::sum
是一個方法引用,用於將兩個整數相加。average()
和 sum()
結束操作:
mapToDouble()
將整數流轉換為 double 流,然後使用 average()
計算平均值。mapToInt()
將 double 流轉換為整數流,然後使用 sum()
計算總和。這些流操作允許你以更簡潔和可讀的方式處理和轉換數據集。它們通常與集合(如 List
、Arrays
)一起使用,以執行各種數據處理任務。
謝謝收看