JDK8新特性(4)—— stream 流
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新加入的流接口(不是函数式接口),获取流的方法:
Collection
集合都可以通过stream
默认方法获取流;Stream
接口的静态方法of
可以获取数组对应的流。
- Stream 流属于管道流,只能被消费一次。第一个 Stream 流调用完毕,数据就会转到下一个流上。此时第一个 stream 就会关闭,不能再调用方法了。
3 Stream 流中的常用方法
流模型的操作方法可以分为2种:
- 延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,支持链式调用(除了终结方法外,其余方法都是延迟方法)
- 终结方法:返回值类型不再是 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 流相关推荐
- 带你看看JDK8新特性:Stream流
相信兄弟萌在学习时碰到过这样的代码吧: List<String> list = new ArrayList(); list.stream().forEach(a-> System.o ...
- JDK8新特性之Stream流
是什么是Stream流 java.util.stream.Stream Stream流和传统的IO流,它们都叫流,却是两个完全不一样的概念和东西. 流可以简单的说是处理数据集合的东西,可以申明式流式A ...
- 15.JDK8新特性之Stream流
什么是 Stream Stream(流)是一个来自数据源的元素队列并支持聚合操作 1)元素是特定类型的对象,形成一个队列. Java中的Stream并不会存储元素,而是按需计算. 2)数据源 流的来源 ...
- JDK8新特性--用stream流将String转数组
传参ids为用,分开的字符串 String[] sysModuleIds = ids.split(",");List list = Arrays.stream(sysModuleI ...
- 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>
需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...
- 跟我学 Java 8 新特性之 Stream 流(七)流与迭代器,流系列大结局
转载自 跟我学 Java 8 新特性之 Stream 流(七)流与迭代器,流系列大结局 恭喜你们,马上就要学完Java8 Stream流的一整系列了,其实我相信Stream流对很多使用Java的同 ...
- 跟我学 Java 8 新特性之 Stream 流(六)收集
转载自 跟我学 Java 8 新特性之 Stream 流(六)收集 我们前面的五篇文章基本都是在说将一个集合转成一个流,然后对流进行操作,其实这种操作是最多的,但有时候我们也是需要从流中收集起一些 ...
- 跟我学 Java 8 新特性之 Stream 流基础体验
转载自 跟我学 Java 8 新特性之 Stream 流基础体验 Java8新增的功能中,要数lambda表达式和流API最为重要了.这篇文章主要介绍流API的基础,也是流API系列的第一篇文章, ...
- 跟我学 Java 8 新特性之 Stream 流(二)关键知识点
转载自 跟我学 Java 8 新特性之 Stream 流(二)关键知识点 我们的第一篇文章,主要是通过一个Demo,让大家体验了一下使用流API的那种酣畅淋漓的感觉.如果你没有实践,我还是再次呼吁 ...
- 跟我学 Java 8 新特性之 Stream 流(三)缩减操作
转载自 跟我学 Java 8 新特性之 Stream 流(三)缩减操作 和前面两篇文章一起服用,效果会更佳.通过对流API的基础体验Demo和关键知识点的讲解,相信大家对流API都有一定的认识了, ...
最新文章
- google chrome 谷歌浏览器 快捷键说明
- Mybatis choose (when, otherwise)标签
- android 设置系统屏幕亮度
- 计算机怎么看网络密码,怎么查看电脑网络连接密码 - 卡饭网
- KeilC51基础 改变代码的字体大小
- anaconda中报错 Executing transaction: failed
- 计算机视觉研究新方向:自监督表示学习总结(建议收藏)
- 在 V2EX 的开发环境里尝试了一下 OneAPM @livid
- 逆向破解之易语言按钮事件特征码
- 重天乾 (易經大意 韓長庚)
- Linux网络-网络配置命令
- Nature:Rob Knight团队发现血液和组织微生物组可诊断癌症
- DataGrid 数据绑定使用小结三(数据绑定)
- 判断Android Textview是否换行
- python JPG图片手动圈画掩膜Mask轮廓ROI
- 博途1200/1500PLC气缸功能块(梯形图和SCL代码对比)
- 《小强升职记》摘录笔记
- 交叉熵损失(cross entropy)
- 吐血整理50家企业真实大数据面试题!!学长实测,真实面试!!快收藏!
- 八家征信试点机构竟然全部out,央行到底想要一个怎样的市场格局?
热门文章
- 拆 米家台灯_米家台灯1S及米家充电台灯测评报告
- SurfaceView显示透明色
- IT行业的发展走向趋势
- 编译出现 warn_unused_result -Wunused-result 如何解决
- js delete 删除属性
- 【Mysql】SQL语句学习
- [GDOI2016][树链剖分+主席树]疯狂动物城
- acm计算机教育汇刊,ACM 全文数据库
- Python使用Turtle画国旗系列,Python相关方法的梳理和总结
- MacBook如何切换操作win系统?2023最新版Parallels虚拟机