Stream流的特點_只能使用一次
public class FilterStudy04 {
public static void main(String[] args) {
//創建一個Stream流
Stream<String> stream = Stream.of("張三丰", "張翠山", "趙敏", "周芷若", "張無忌");
//對Stream流中的元素進行過濾,只要姓張的人
Stream<String> stream2 = stream.filter((String name) -> {
return name.startsWith("張");
});
//遍歷stream2
stream2.forEach(s -> System.out.println(s));
//優化寫法
// stream.filter(s -> s.startsWith("張")).forEach(s -> System.out.println(s));
/**
* Stream流屬於管道流,只能被消費(使用)一次
* 第一個Stream流調用完畢方法,數據就會流轉到下一個Stream上,而這時第一個Stream流已經使用完畢,就會關閉了
* 所以第一個Stream流就不能再調用方法了
* IllegalStateException: stream has already been operated upon or closed
*/
stream.forEach(s -> System.out.println(s));
}
}
Stream流中的常用方法_map
映射:map
如果需要將流中的元素映射到另一個流中,就可以使用map方法。方法簽名:
java <R> Stream<R> map(Function<? super T,? extends R> mapper)
該接口需要一個Function函數式接口函數,可以將當前流中T類型數據轉換為另一種R類型的流
複習Function接口
此前我們已經學習過java.util.stream.Function函數式接口,其中唯一的抽象方法為:
R apply(T t);
這可以將一種T類型轉換稱為R類型,而這種轉換的動作,就稱為映射
基本使用:
package com.yang.Test.StreamStudy;
import java.util.stream.Stream;
public class mapStudy {
public static void main(String[] args) {
//獲取一個String類型的Stream流
Stream<String> stream = Stream.of("1", "2", "3", "4");
/* //使用map方法,把字符串類型的整數,轉換為Integer類型的整數
Stream<Integer> stream2 = stream.map((String s) -> {
return Integer.parseInt(s);
});
//遍歷stream2流
stream2.forEach((Integer integer)->{
System.out.println(integer);
});*/
//優化寫法
stream.map(s -> Integer.parseInt(s)).forEach(integer -> System.out.println(integer+5));
}
}
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。