Java 8 之Stream 生成姿勢

Stream 的定義

  • 支持順序和并行聚合操作的元素序列
  • 可以由數(shù)組、集合以及文件轉(zhuǎn)換而成
  • Stream 消費完之后便沒有了,就想流水一樣
  • 生成流的“源”是一個不會在操作流的過程中改變

生成流的"姿勢"

  • 數(shù)組生成流
Integer[] arr = {1, 2, 3, 4, 6};//這里可以開成int[] 試試看看結(jié)果。。。①
        Stream.of(arr)//生成流Stream<Integer>
                .forEach(System.out::println);//打印流中的每個元素
  • 集合(list)生成流,Collection 接口已經(jīng)添加了stream 方法,即所有實現(xiàn)改接口的都可以生成流
Arrays.asList(1, 2, 3, 4)//返回list集合
                .stream()//轉(zhuǎn)換為Stream<Integer>
                .forEach(System.out::println);
  • 讀文件生成流
Files.lines(Paths.get("E:\\temp\\test.txt"))
                .forEach(System.out::println);
  • Stream 自帶生成無限流, Stream 類中的有兩個靜態(tài)方法來生成無限流
    • 方法簽名:public static<T> Stream<T> generate(Supplier<T> s);Supplier<T> 是一個函數(shù)式接口,主要作用生產(chǎn)流中的元素
Stream.generate(() -> 1)
                .limit(5)// 
                .forEach(System.out::println);
  • 方法簽名:public static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f);seed 就是初始值,UnaryOperator<T> 操作傳進來的參數(shù) 返回和參數(shù)相同的類型
Stream.iterate(5, i -> i + 1)//生成無線流
                .limit(5)//使用limit 截斷流 這里取前5個,類比sql 的limit
                .forEach(System.out::println);

上面兩個方法都是生成無限流,下面來講兩個個生成有限流的

  • LongStream和IntStream的range()和rangeClosed() 方法,兩個方法的參數(shù)都是一樣:起始值和結(jié)束值,類型都是long或者int, 這兩個方法的區(qū)別是:range方法是不包括結(jié)束值,rangeClosed是包含結(jié)束值的。
@Test
    public void streamRanged() {
        IntStream.range(1, 2)
                .forEach(System.out::println);
    }

結(jié)果:

 1
    @Test
    public void streamRangeClosed() {
        IntStream.rangeClosed(1, 2)
                .forEach(System.out::println);
    }

結(jié)果:

1
2

大家歡迎指正批評
代碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,536評論 19 139
  • 轉(zhuǎn)自: Java 8 中的 Streams API 詳解 為什么需要 Stream Stream 作為 Java ...
    普度眾生的面癱青年閱讀 2,975評論 0 11
  • 第一章 為什么要關(guān)心Java 8 使用Stream庫來選擇最佳低級執(zhí)行機制可以避免使用Synchronized(同...
    謝隨安閱讀 1,555評論 0 4
  • 一、前言 ??在目前用到的JDK8的功能當(dāng)中,毫無疑問Stream的使用是最多的,所以通過這篇文章來學(xué)習(xí)總結(jié)一下。...
    騎著烏龜去看海閱讀 2,190評論 1 7
  • 在克里特挖掘著古老 這大地封存著公元前的美好 那滿是橄欖的綠色巴爾干島 城邦的石墻在這里生長和摔倒 熟透的葡萄有遠(yuǎn)...
    北岸縹緗閱讀 492評論 0 1

友情鏈接更多精彩內(nèi)容