zoukankan      html  css  js  c++  java
  • 高效 告别996,开启java高效编程之门 3-15实战:流的构建四种形式

    1    重点

    1.1  流的构建的四种方式

    2    Demo之由数值构建流

    demo:

    @Test
        /**
         * 1    由数值直接构建流
         * 问题:为什么可以用System.out::println ?
         */
        public void streamFromValue(){
            Stream stream = Stream.of(1,2,3,4,5);
            stream.forEach(System.out::println);
        }

    打印日志:

    1
    2
    3
    4
    5
    Process finished with exit code 0
    3    Demo之由数组构建流:

    demo:

    @Test
        /**
         * 2    通过数组构建流
         */
        public void streamFromArray(){
            int[] intValue = {1,2,3,4,5,6};
            IntStream intStream = Arrays.stream(intValue);
            intStream.forEach(System.out::println);
        }

    打印日志:

    1
    2
    3
    4
    5
    6

    Process finished with exit code 0
    4    Demo之由文件构建流

     demo:

    /**
         * 3    通过文件生成流
         * 重点:可以看看Files.lines 里面的内容是如何生成的(为什么用Paths.get获取到path,主要是点进去方法,Path接口中 是可以通过Paths.get方法得到)
         */
        @Test
        public void streamFromFile() throws IOException {
            Stream<String> stream = Files.lines(Paths.get("F:\xiangmu3\Xin\test996\src\test\java\com\imooc\zhangxiaoxi\stream\StreamConstructor.java"));
            stream.forEach(System.out::println);
        }

    打印日志:

    D:javajdkjdk9jdk-9+181_windows-x64_rijava-se-9-rijdk-9injava.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4libidea_rt.jar=14554:D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4in" -Dfile.encoding=UTF-8 -classpath "D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4libidea_rt.jar;D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4pluginsjunitlibjunit-rt.jar;D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4pluginsjunitlibjunit5-rt.jar;F:xiangmu3Xin	est996	arget	est-classes;F:xiangmu3Xin	est996	argetclasses;F:xiangmu3Xin	est996libcomgoogleguavaguava28.2-jreguava-28.2-jre.jar;F:xiangmu3Xin	est996libcomgoogleguavafailureaccess1.0.1failureaccess-1.0.1.jar;F:xiangmu3Xin	est996libcomgoogleguavalistenablefuture9999.0-empty-to-avoid-conflict-with-guavalistenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;F:xiangmu3Xin	est996libcomgooglecodefindbugsjsr3053.0.2jsr305-3.0.2.jar;F:xiangmu3Xin	est996liborgcheckerframeworkchecker-qual2.10.0checker-qual-2.10.0.jar;F:xiangmu3Xin	est996libcomgoogleerrorproneerror_prone_annotations2.3.4error_prone_annotations-2.3.4.jar;F:xiangmu3Xin	est996libcomgooglej2objcj2objc-annotations1.3j2objc-annotations-1.3.jar;F:xiangmu3Xin	est996libjunitjunit4.12junit-4.12.jar;F:xiangmu3Xin	est996liborghamcresthamcrest-core1.3hamcrest-core-1.3.jar;F:xiangmu3Xin	est996libcomalibabafastjson1.2.58fastjson-1.2.58.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit3 com.imooc.zhangxiaoxi.stream.StreamConstructor,streamFromFile
    package com.imooc.zhangxiaoxi.stream;
    
    import org.junit.Test;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.stream.IntStream;
    import java.util.stream.Stream;
    
    /**
     * StreamConstructor
     *  用来演示流的四种构建形式
     * @author 魏豆豆
     * @date 2020/4/30
     */
    public class StreamConstructor {
    
        @Test
        /**
         * 1    由数值直接构建流
         * 问题:为什么可以用System.out::println ?
         */
        public void streamFromValue(){
            Stream stream = Stream.of(1,2,3,4,5);
            stream.forEach(System.out::println);
        }
    
        @Test
        /**
         * 2    通过数组构建流
         */
        public void streamFromArray(){
            int[] intValue = {1,2,3,4,5,6};
            IntStream intStream = Arrays.stream(intValue);
            intStream.forEach(System.out::println);
        }
    
    
        /**
         * 3    通过文件生成流
         * 重点:可以看看Files.lines 里面的内容是如何生成的(为什么用Paths.get获取到path,主要是点进去方法,Path接口中 是可以通过Paths.get方法得到)
         */
        @Test
        public void streamFromFile() throws IOException {
            Stream<String> stream = Files.lines(Paths.get("F:\xiangmu3\Xin\test996\src\test\java\com\imooc\zhangxiaoxi\stream\StreamConstructor.java"));
            stream.forEach(System.out::println);
        }
    
    
        /**
         * 4    通过函数生成流
         * 生成3的等差数列,取前10条
         * 生成5个随机数
         * 问题:为什么Stream.generate(Math.radom()) 方法不可以呢?
         */
        @Test
        public void streamFromFunction(){
            /*Stream stream = Stream.iterate(0,i->i+3).limit(10);
            stream.forEach(System.out::println);*/
    
            Stream stream = Stream.generate(Math::random);
            stream.limit(5).forEach(System.out::println);
    
        }
    
    
    
    
    
    
    }
    
    Process finished with exit code 0


     

    5    Demo之由函数构建流

    demo:

    /**
         * 4    通过函数生成流
         * 生成3的等差数列,取前10条
         * 生成5个随机数
         * 问题:为什么Stream.generate(Math.radom()) 方法不可以呢?
         */
        @Test
        public void streamFromFunction(){
            /*Stream stream = Stream.iterate(0,i->i+3).limit(10);
            stream.forEach(System.out::println);*/
    
            Stream stream = Stream.generate(Math::random);
            stream.limit(5).forEach(System.out::println);
    
        }

    打印日志:

    0.10992075250417033
    0.4290787589469168
    0.20679958417543365
    0.04201955124184875
    0.43265370281686455
    
    Process finished with exit code 0
  • 相关阅读:
    Path类的最全面具体解释
    数据挖掘之分类算法---knn算法(有matlab样例)
    Android View框架的measure机制
    2017年本博客知识体系引导(更新至2017.8.11)
    [DevExpress]DevExpress 中 汉化包 汉化方法
    盗墓笔记第一季全(12集)下载地址
    浅谈spring——注解配置(九)
    git使用系列(一)
    算法与数据结构(一)
    phpstrom 2016.2 注册服务器地址
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/12811164.html
Copyright © 2011-2022 走看看