1.创建流的方式可以有多种:使用静态方法创建流;Collection接口的实现类的对象调用stream()方法创建流;使用Arrays这个工具类将数组等变为一个流;其他类的函数返回一个流,例如Random类的ints方法;

2.常见的使用

package com.ydlclass.feature;

import org.junit.Test;

import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import java.util.stream.Stream;

public class StreamTest {
    @Test
    public void creatTest(){
        //流的几种创建
        List<String> list = new ArrayList<>();
        Stream<String> stream = list.stream();//集合类变成一个流,不同于parallStream并行流,后者的速度会快很多;

        Map<String,String> map = new HashMap<>();//Map没有此方法,原因在于Stream是collection的方法,但是Map不是Collection的子类;

        Set<String> set = new HashSet<>();
        Stream<String> stream1 = set.stream();//Set是Collection的子类所以是可以的

        //使用集合工具类实现
        int[] ints = {1,2,34,1};
        IntStream stream2 = Arrays.stream(ints);//对于一个基础数据类型的数组,变为一个IntStream流

        String[] strings = {"1","2"};
        Stream<String> stream3 = Arrays.stream(strings);//非基础数据类型数组变为一个带有泛型的Stream;


        long[] longs = {1L,23L,3L};
        LongStream stream4 = Arrays.stream(longs);//对基础数据类型,或者是引用数据类型的处理不相同

        String[] ints2 = {"3","4"};
        Stream<String> stream5 = Arrays.stream(ints2);


        //可以使用Stream的Concat(steam1, stream2),使用此函数合并成一个新的流;
        Stream<String> concat = Stream.concat(stream3, stream5);//注意使用此方法时要求被合并的两个Stream流泛型样式的流

        //使用Stream.of(),构件一个流
        Stream<String> stringStream = Stream.of("1", "2");

        //其他的类创建流
        IntStream ints1 = new Random().ints(100);//ints,这个方法的返回值就是一个流,100个数的流



    }
}