友情提示:若是要看懂Stream,得先把Lambda先搞明白,能够去Java8-Lambda表达式瞧一瞧java
Stream 是 Java8 中处理集合的关键抽象概念,它能够指定你但愿对集合进行的操做,能够执行很是复杂的查找、过滤和映射数据等操做。使用Stream API 对集合数据进行操做,就相似于使用 SQL 执行的数据库查询。也能够使用 Stream API 来并行执行操做。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。数据库
注意先有集合再有流,流是去操做集合的,“集合讲的是数据,流讲的是计算!”
三个注意的点:spa
Stream 它不会存储元素。
Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
Stream 操做是延迟执行的。这意味着他们会等到须要结果的时候才执行.net
第一步建立流code
第二步对数据进行中间操做对象
第三步终止操做,好比数据展示,存放等blog
package com.jv.java8.stream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; import org.junit.Test; import com.jv.bean.Cust; public class TestStream { //建立流,并作简单的演示 @Test public void test1() { //1.经过集合的实例方法stream()或者parallelStream()建立 List<String> l = new ArrayList(); l.add("重庆真美"); l.add("火锅好吃"); l.add("妹子好看"); Stream<String> sm1 = l.stream(); sm1.forEach(System.out::println); //2.经过Arrays建立 Cust[] cs = new Cust[10]; Stream<Cust> sm2 = Arrays.stream(cs); //3.建立无限流 Stream<Integer> sm3 = Stream.iterate(0, (x)->x+3); sm3.limit(15).forEach(System.out::println); //4.使用Stream.of静态方法建立 Stream<String> sm4 = Stream.of("合川桃片","江津老白干","丰都鬼城","李子坝轻轨站"); sm4.forEach(System.out::println); } }
使用Arrays.stream和Stream.of建立流还有不少重载的方法,老铁们能够本身去多看看,好比Arrays.stream有一个带泛型的方法,表示能够存听任何对象get
注:中间操做是延迟执行的,只有当终止操做出现时,中间操做才会执行。it
中间操做须要单独开篇进行详述,敬请期待。。。java8