Java 8添加了一种新的抽象叫做Stream流,其数据来源可以是数组,集合等。
stream的调用可以来自单列集合双列集合等(双列集合不能直接使用)。一般使用链式编程,因为stream流只可以用一次,所以没必要再为每一步骤命名。stream流有中间方法和终结方法,中间方法后面还可以通过' . '和其它方法一起使用,而终结方法后面不能再加' . '。终结方法有forEach()"打印流中每一个数据" 。count():“统计流中数据的个数”。toArray()返回数组,记录流中每一个值。中间方法有:filter():"根据正则表达式过滤数据",limit(int i):“获取流中的前i个数据”,skip(int i):“跳过i个数据”distinct():"元素去重,(根据Hashcode和equals方法去重)",concat(a,b):"合并流a和流b"。如图:
![](https://i-blog.csdnimg.cn/blog_migrate/bb05b02fccb1adf22533cada7a31790c.png)
上图用了两种方法,作用一样,使用lambda方法可以简写。
双列集合调用要使用entrySet()或者可以Set()方法再调用:
![](https://i-blog.csdnimg.cn/blog_migrate/3ca2cf5f6ea781fec8032138b1edb801.png)
数组的stream流形式:
![](https://i-blog.csdnimg.cn/blog_migrate/2ebed1e974068003865cb55b8bda6416.png)
对于同一类型(除基本数据类型)任何数据:
![](https://i-blog.csdnimg.cn/blog_migrate/6bfde8e1d11166d09bf6ea0c27d9d12f.png)
filter,limit,skip的使用:
![](https://i-blog.csdnimg.cn/blog_migrate/a1e1cc44fef1d18ff5541a44a0a67553.png)
distinct,concat的使用
![](https://i-blog.csdnimg.cn/blog_migrate/edf7ad09447a0bfe8cd4d2add1e9410d.png)
终结方法的使用:
![](https://i-blog.csdnimg.cn/blog_migrate/dbdfaa73a89e736186c3c98c19a83c8c.png)