1、使用传统的方式遍历集合
Stream 流有别于I/O流,是对集合和数组进行操作,解决集合数组的弊端
循环弊端
package con.day13.demo05.StreamAndMethod;
import java.util.ArrayList;
import java.util.List;
public class Demo01Test {
//使用传统方式对集合进行遍历
public static void main(String[] args) {
//创建一个集合,存储数据
ArrayList<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
List<String> zhangList1 = new ArrayList<>();
for (String name:list){
if (name.startsWith("张")){
zhangList1.add(name);
}
}
List<String> shortList = new ArrayList<>();
for (String name: zhangList1){
if (name.length() == 3){
shortList.add(name);
}
}
for (String name : shortList){ // 简写shortList.for()
System.out.println(name);
}
}
}
结果
张无忌
张三丰
2、使用Streaml流的方式,遍历集合
循环弊端package con.day13.demo05.StreamAndMethod;
import java.util.ArrayList;
/*
Stream 流是JDK 1.8之后出现的, 关注做什么,而不是怎么做
使用Stream流遍历结合,对集合中数据进行过滤
*/
public class Demo02Stream {
public static void main(String[] args) {
//创建一个集合,存储数据
ArrayList<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));
}
}
3、流式思想概述
流式思想类似于生产车间的流水线
集合元素的处理方案,流式思想
这里filter map skip 都是对函数模型进行操作,集合元素并没有真正被处理,只有当终结方法count执行的时候,整个模型才会按照指定策略执行操作,而这得益于Lambda的延迟执行特性
Stream其实是一个集合元素的函数模型,他并不是集合,也不是数据结构, 其本身并不存储任何元素或其他地址
流
网友评论