代码如下:

package StreamTest;import java.lang.reflect.Array;
import java.util.ArrayList;public class StreamDemo {public static void main(String[] args){ArrayList<String> list = new ArrayList<String>();list.add("Tom");list.add("jack");list.add("张敏");list.add("张无忌");list.add("刘洋");list.add("Bom");list.add("张曼玉");ArrayList<String> zhangList = new ArrayList<String>();for (String s:list){if (s.startsWith("张"))zhangList.add(s);}System.out.println(zhangList);ArrayList<String> threeList = new ArrayList<String>();for(String s:zhangList){if (s.length()==3){threeList.add(s);}}System.out.println(threeList);}
}

测试结果:


我们可以看到,按照需求实现以后,仅仅只是两个简单的过滤操作,我们就写了那么长的代码,那我们有没有办法有更好的方式实现这样的需求呢?

sure,用Stream流

代码如下:

package StreamTest;import java.lang.reflect.Array;
import java.util.ArrayList;public class StreamDemo {public static void main(String[] args){ArrayList<String> list = new ArrayList<String>();list.add("Tom");list.add("jack");list.add("张敏");list.add("张无忌");list.add("刘洋");list.add("Bom");list.add("张曼玉");//Stream流来改进
//        list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(s -> System.out.println(s));list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(System.out::println);}
}

测试结果:

[Java基础]体验Stream流相关推荐

  1. Java基础(十一) Stream I/O and Files

    Java基础(十一) Stream I/O and Files 1. 流的概念 程序的主要任务是操纵数据.在Java中,把一组有序的数据序列称为流. 依据操作的方向,能够把流分为输入流和输出流两种.程 ...

  2. 【java笔记】Stream流(1)你知道什么叫Stream流吗?

    JDK8 中的 Stream 是对集合(Collection)对象功能的增强,它借助于lambda表达式,更优雅的表达风格,极大的提高编程效率和程序可读性.它针对于对集合对象进行各种非常便利.高效的聚 ...

  3. 【java笔记】Stream流(2):获取流的两种方法

    获取一个流通常有两种方式: ●所以的Collection集合都可以通过stream默认方法获取流 ●Stream接口的静态方法of可以获取数组对应的流 根据Collection集合获取Stream流 ...

  4. 【Java基础】· IO流习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  5. Java基础--I/O流知识总结

    Java基础–I/O流知识总结 文章目录 Java基础--I/O流知识总结 引言 Java中IO的结构体系 字节流(InputStream/OutputStream) FileInputStream/ ...

  6. Java基础学习—— IO流

    Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...

  7. java基础学习_IO流03_字符流、IO流小结、案例_day21总结

    java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...

  8. java day24【Stream流、方法引用】

    第一章 Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"IO流"呢?在Java 8中,得益于Lambda所带来的 ...

  9. Java基础之IO流操作

    第14章 File类与IO流 主要内容 File类 字节流 字符流 文件流 缓冲流 转换流 数据流 对象流 打印流 Scanner与System与IO流 教学目标 使用File类对象表示文件或目录 能 ...

最新文章

  1. 分布式多层次限流概述
  2. windows下mysql启动脚本
  3. 单元测试命名最佳实践[关闭]
  4. 35. Leetcode 328. 奇偶链表 (链表-双指针)
  5. 第一个 python for maya
  6. boost::geometry::densify用法的测试程序
  7. 《剑指offer》链表中倒数第k个结点
  8. python第三章上机实践_《机器学习Python实践》读书笔记-第三章
  9. C++:从C继承的标准库
  10. jQuery.position()其实不可靠!
  11. 机器学习recall含义_机器学习的业务含义
  12. 协程 vs 线程 demo
  13. 数组元素在删减的同时进行遍历的操作,程序崩溃问题
  14. C C++回调函数和java的回调函数
  15. VUE实现SQL在线编辑器,SQL分析器,SQL代码关键字提示
  16. 【新书速递】计算机系统解密:从理解计算机到编写高效代码
  17. win10如何打开摄像头_1809版Win10系统启动相机提示0x800706be解决方法是什么?
  18. tp6 api请求返回参数统一配置方法
  19. 阿里云商标注册申请智能、顾问和安心区别及选择攻略
  20. 450米、90米、30米全国地形图DEM数据对比与分享

热门文章

  1. 【北斗】北斗卫星导航系统(BDS)介绍
  2. Android之导入项目提示Android requires compiler compliance level 5.0 or 6.0. Found ‘1.8‘ instead解决办法
  3. linux之more命令
  4. 栈和队列之生成窗口最大值数组
  5. Android之获取屏幕和视图高和宽
  6. odbc mysql 配置文件_ODBC连接主流数据库的配置方法
  7. 疯狂福利 | 美剧《天赋异禀》1-2季免费送!播放超12亿!刷了整整一晚上,太上头!...
  8. 硬货 | 一片小小的薄膜,却可以粘住全世界!
  9. 放弃Python转向Go语言:我们找到了以下9大理由
  10. seata xid是什么_使用Seata彻底解决Spring Cloud中的分布式事务问题!