java8新特性之 StreamApi 流的创建(一)

流(Stream):

是数据渠道,用于操作数据源所生产的元素序列

“集合江的是数据,流讲的是计算”

注意:

    1:Stream 自己不会储存元素。

    2:Stream 不会改变源对象,相反他们会返回一个持有结果的新Stream。

    3:Stream 操作是延迟执行的,这意味着他们会等到需要结果的时候才去执行。


Stream的操作三个步骤

. 创建Stream

一个数据源(如:集合,数组),获取一个流

.中间操作

一个中间操作链,对数据源的数据进行处理

.中止操作(终端操作)

一个中止操作,执行中间操作链,并产生结果



package com.example.jedis.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * ***GOOD LUCK****
 *
 * @Author : Wukn
 * @Date : 2018/6/
 */

/**
 * StreamApi
 *
 *
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class StreamApiDemo {

    /**
     * Stream三个操作步骤
     * 1,创建Stream
     * 2,中间操作
     * 3,中止操作
     */

    
    

    /**
     *  创建Stream流的方式
     */
    @Test
    public void test1() {

       /**可以通过Collection 集合系列提供的
        * stream()   串行流
        *         * parallelStream()  并行流
        */
        List<String> list = new ArrayList <>(  );
        Stream<String> stream = list.stream();



        /**
         *通过Arrays中的静态方法stream()获取数组流
         */
        Use[] uses = new Use[10];
        Stream<Use> stream1 = Arrays.stream( uses );



        /**
         * 通过Stream类中的静态方法  of()
         */
        Stream<String> stream2 = Stream.of( "aa" );



        /**
         * 创建无限流
         */
        //迭代
        Stream<Integer> stream3 = Stream.iterate( 0,(x) -> x+2 );
        stream3.limit( 10 ).forEach( (x) -> System.out.println(x));


        //生成
        Stream.generate( () -> Math.random() ) //数据源,可以产生任意的随机数
                .limit( 5 )                      //中间操作,只需要五个随机数
                .forEach( System.out::println ); //中止操作,遍历打印这五个


    }

}

猜你喜欢

转载自blog.csdn.net/weixin_41404773/article/details/80908608
今日推荐