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个数的流
}
}