您的位置:首页 > 汽车 > 时评 > 亚马逊服务器永久免费_企业管理咨询公司前景_标题优化怎么做_如何快速网络推广

亚马逊服务器永久免费_企业管理咨询公司前景_标题优化怎么做_如何快速网络推广

2024/12/26 13:53:24 来源:https://blog.csdn.net/weixin_52821030/article/details/144304983  浏览:    关键词:亚马逊服务器永久免费_企业管理咨询公司前景_标题优化怎么做_如何快速网络推广
亚马逊服务器永久免费_企业管理咨询公司前景_标题优化怎么做_如何快速网络推广

Stream 流介绍

目标

了解集合的处理数据的弊端

理解Stream流的思想和作用

集合处理数据的弊端

        当我们需要对集合中的元素进行操作的时候,除了必须的添加,删除,获取外,最典型的就是遍历集合。我们来体验集合操作的弊端,需求如下:

一个 ArrayList集合中存储有以下数据:张无忌,周芷若,赵敏,张强,张三丰

需求:1.拿到所有姓张的 2.拿到名字长度为3个字的 3.打印这些数据

代码如下: 

public class StreamTest {public static void main(String[] args) {// 一个ArrayList集合中存储有以下数据:张无忌,周芷若,赵敏,张强,张三丰// 需求:1.拿到所有姓张的 2.拿到名字长度为3个字的 3.打印这些数据ArrayList<String> list = new ArrayList<>();Collections.addAll(list,"张无忌", "周芷若", "赵敏", "张强", "张三丰");// 1.拿到所有姓张的ArrayList<String> zhanglist = new ArrayList<>();for (String name : list) {if(name.startsWith("张")){zhanglist.add(name);}}// 2.拿到名字长度为3个字的ArrayList<String> lengthlist = new ArrayList<>();for (String name : zhanglist){if(name.length() == 3){lengthlist.add(name);}}//3.打印这些数据for (String name: lengthlist) {System.out.println(name);}}
}

循环遍历的弊端

这段代码中含有三个循环,每一个作用不同。

        1.首先筛选所有姓张的人;

        2.然后筛选名字又三个字的人;

        3.最后进行输出打印。

每当我们需要对集合中的元素进行操作时,总需要进行循环,循环,再循。这是理所当然的吗?不是。循环是做事情的方式,而不是目的。每个需求都要循环一次,还要搞一个新集合来装数据,如果希望再次遍历,只能使用另一个循环从头开始。

那Stream能给我们带来怎么样的写法呢?

Stream更优的写法。

下面来看一下借助Java 8的Stream API,修改后的代码

public class StreamTest01 {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("张无忌");list.add("周芷若");list.add("赵敏");list.add("张强");list.add("张三丰");list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3 ).forEach(System.out::println);}
}

直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:获取流、过滤姓张、过滤长度为3、逐一打印。我们真 正要做的事情内容被更好地体现在代码中。

Stream流式思想概述

注意:Stream和IO流(InputStream/OutputStream)没有任何关系,请暂时忘记对传统IO流的固有印象!

Stream流式思想类似于工厂车间的“生产流水线”,Stream流不是一种数据结构,不保存数据,而是对数据进行加工 处理。Stream可以看作是流水线上的一个工序。在流水线上,通过多个工序让一个原材料加工成一个商品。

Stream API能让我们快速完成许多复杂的操作,如筛选、切片、映射、查找、去除重复,统计,匹配和归约。

小结:首先我们了解了集合操作数据的弊端,每次都要循环遍历,还要创建新的集合,很麻烦。

Stream是流式思想,相当于工厂的流水线,对集合中的数据进行加工处理

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com