感谢:bilibili up主:学相伴飞哥 倾囊相授!这只是我的学习总结,更多知识可以关注飞哥!
目录
1-1 Collection下的Stream()方法和paralleStream()方法
1-3 Stream中的静态方法:of() , iterate() , generate()
1-4 BufferReader.lines()方法,将每行内容都转换成流
1-5 Pattern.splitAsStream(方法,将字符串分隔成流
1.Stream流常用创建方法
1-1 Collection下的Stream()方法和paralleStream()方法
List<String> list = new ArrayList<>();
Stream<String> stream1 = list.Stream();//获取一个顺序流
Stream<String> stream2 = list.paralleStream();
//获取一个并行流,在并发式编程中,这个的效率比上面个高很多
1-2 Arrays下的Stream()方法
Integer[] nums = new Integer[10];
Stream<Integer> stream3 = Arrays.Stream(nums);
1-3 Stream中的静态方法:of() , iterate() , generate()
//创建一个流
Stream<Integer> stream4 = Stream.of(1,2,3,4,5);
//创建一个迭代的流,输出打印它
//从0开始迭代,每次+2,链式编程用limit限制迭代次数为6
Stream<Integer> stream5 = Stream.iterate(0,( x -> x + 2 ).limit(6));
stream5.forEach(System.out::println);//0 2 4 6 8 10
//返回一个无限连续的无序流,次数为2
Stream<Double> stream6 = Stream.generate(Math::random).limit(2);
stream6.forEach(System.out::println);
1-4 BufferReader.lines()方法,将每行内容都转换成流
BufferedReader reader = new BufferedReader(new FileReader("F:\\test_Stream.txt")) ;
Stream<string> lineStream = reader.lines();
lineStream.forEach(System.out::println);
1-5 Pattern.splitAsStream(方法,将字符串分隔成流
//以逗号作为分隔符,分割的每一部分都是流
Pattern pattern = Pattern. compile(",");
Stream<String> stringStream = pattern.splitAsStream("a,b,c,d");
stringStream.forEach(System.out::println);
2.Stream流的两种操作(下面两张图中的具体使用代码就不搬过来了,我自己悄悄看哈哈哈哈哈,其实是太多了我没记住,就不想总结上来了)
2-1 中间操作
2-2 终止操作
飞哥生动的讲了一段话:(这段话我倒是一字不差记下了哈哈哈哈)
可以形象地理解Stream的操作是对一组粗糙的工艺品原型(即对应的Stream数据源)进行加工成颜色统-一的工艺品(即最终得到的结果),第一步筛选出合适的原型(即对应Stream的filter的方法),第二步将这些筛选出来的原型工艺品上色(对应Stream的map方法),第三步取下这些,上好色的工艺品(即对应Stream的collect(toList())方法)。在取下工艺品之前进行的操作都是中间操作,可以有多个或者0个中间操作,但每个Stream数据源只能有一次终止操作,否则程序会报错。