1 对集合元素进行过滤

public class Demo01Stream {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("赵子龙");list.add("曹孟德");list.add("金毛狮王");list.add("令狐飞雪");list.add("曹小满");list.stream().filter(name -> name.startsWith("曹")).filter(name -> name.length() == 3).forEach(name -> System.out.println(name));}
}

2 两种获取流的方法

java.util.stream.Stream<T> 是JDK8新加入的流接口(不是函数式接口),获取流的方法:

  1. Collection 集合都可以通过 stream 默认方法获取流;
  2. Stream 接口的静态方法 of 可以获取数组对应的流。

  • Stream 流属于管道流,只能被消费一次。第一个 Stream 流调用完毕,数据就会转到下一个流上。此时第一个 stream 就会关闭,不能再调用方法了。

3 Stream 流中的常用方法

流模型的操作方法可以分为2种:

  1. 延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,支持链式调用(除了终结方法外,其余方法都是延迟方法)
  2. 终结方法:返回值类型不再是 Stream 接口自身类型的方法,比如 count ,forEach方法

3.1 foreach

/*** @Description TODO* @Author tzb* @Date 2020/12/1 17:12* @Version 1.0**/
public class Demo02Stream_forEach {public static void main(String[] args) {// 获取一个 Streamfinal Stream<String> stream = Stream.of("张三", "李四", "王五");stream.forEach(name -> System.out.println(name));}
}

3.2 filter

3.3 map

  • 将流中的元素映射到另一个流中
  public static void main(String[] args) {// 获取一个 Streamfinal Stream<String> stream = Stream.of("1", "2", "3", "4");stream.map(num -> Integer.parseInt(num)).forEach(num -> System.out.println(num));}

3.4 count

public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);final Stream<Integer> stream = list.stream();final long count = stream.count();System.out.println(count);}

3.5 limit

3.6 skip

3.7 concat

JDK8新特性(4)—— stream 流相关推荐

  1. 带你看看JDK8新特性:Stream流

    相信兄弟萌在学习时碰到过这样的代码吧: List<String> list = new ArrayList(); list.stream().forEach(a-> System.o ...

  2. JDK8新特性之Stream流

    是什么是Stream流 java.util.stream.Stream Stream流和传统的IO流,它们都叫流,却是两个完全不一样的概念和东西. 流可以简单的说是处理数据集合的东西,可以申明式流式A ...

  3. 15.JDK8新特性之Stream流

    什么是 Stream Stream(流)是一个来自数据源的元素队列并支持聚合操作 1)元素是特定类型的对象,形成一个队列. Java中的Stream并不会存储元素,而是按需计算. 2)数据源 流的来源 ...

  4. JDK8新特性--用stream流将String转数组

    传参ids为用,分开的字符串 String[] sysModuleIds = ids.split(",");List list = Arrays.stream(sysModuleI ...

  5. 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>

    需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...

  6. 跟我学 Java 8 新特性之 Stream 流(七)流与迭代器,流系列大结局

    转载自   跟我学 Java 8 新特性之 Stream 流(七)流与迭代器,流系列大结局 恭喜你们,马上就要学完Java8 Stream流的一整系列了,其实我相信Stream流对很多使用Java的同 ...

  7. 跟我学 Java 8 新特性之 Stream 流(六)收集

    转载自   跟我学 Java 8 新特性之 Stream 流(六)收集 我们前面的五篇文章基本都是在说将一个集合转成一个流,然后对流进行操作,其实这种操作是最多的,但有时候我们也是需要从流中收集起一些 ...

  8. 跟我学 Java 8 新特性之 Stream 流基础体验

    转载自   跟我学 Java 8 新特性之 Stream 流基础体验 Java8新增的功能中,要数lambda表达式和流API最为重要了.这篇文章主要介绍流API的基础,也是流API系列的第一篇文章, ...

  9. 跟我学 Java 8 新特性之 Stream 流(二)关键知识点

    转载自   跟我学 Java 8 新特性之 Stream 流(二)关键知识点 我们的第一篇文章,主要是通过一个Demo,让大家体验了一下使用流API的那种酣畅淋漓的感觉.如果你没有实践,我还是再次呼吁 ...

  10. 跟我学 Java 8 新特性之 Stream 流(三)缩减操作

    转载自   跟我学 Java 8 新特性之 Stream 流(三)缩减操作 和前面两篇文章一起服用,效果会更佳.通过对流API的基础体验Demo和关键知识点的讲解,相信大家对流API都有一定的认识了, ...

最新文章

  1. google chrome 谷歌浏览器 快捷键说明
  2. Mybatis choose (when, otherwise)标签
  3. android 设置系统屏幕亮度
  4. 计算机怎么看网络密码,怎么查看电脑网络连接密码 - 卡饭网
  5. KeilC51基础 改变代码的字体大小
  6. anaconda中报错 Executing transaction: failed
  7. 计算机视觉研究新方向:自监督表示学习总结(建议收藏)
  8. 在 V2EX 的开发环境里尝试了一下 OneAPM @livid
  9. 逆向破解之易语言按钮事件特征码
  10. 重天乾 (易經大意 韓長庚)
  11. Linux网络-网络配置命令
  12. Nature:Rob Knight团队发现血液和组织微生物组可诊断癌症
  13. DataGrid 数据绑定使用小结三(数据绑定)
  14. 判断Android Textview是否换行
  15. python JPG图片手动圈画掩膜Mask轮廓ROI
  16. 博途1200/1500PLC气缸功能块(梯形图和SCL代码对比)
  17. 《小强升职记》摘录笔记
  18. 交叉熵损失(cross entropy)
  19. 吐血整理50家企业真实大数据面试题!!学长实测,真实面试!!快收藏!
  20. 八家征信试点机构竟然全部out,央行到底想要一个怎样的市场格局?

热门文章

  1. 拆 米家台灯_米家台灯1S及米家充电台灯测评报告
  2. SurfaceView显示透明色
  3. IT行业的发展走向趋势
  4. 编译出现 warn_unused_result -Wunused-result 如何解决
  5. js delete 删除属性
  6. 【Mysql】SQL语句学习
  7. [GDOI2016][树链剖分+主席树]疯狂动物城
  8. acm计算机教育汇刊,ACM 全文数据库
  9. Python使用Turtle画国旗系列,Python相关方法的梳理和总结
  10. MacBook如何切换操作win系统?2023最新版Parallels虚拟机