使用传统的方式遍历集合,对集合中的数据进行过滤和使用Stream流的方式,遍历集合,对集合中的数据进行过滤
使用传统的方式遍历集合,对集合中的数据进行过滤
在Java8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。
传统集合的多步遍历代码
几乎所有的集合都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的
添加、删除、获取外,最典型的就是集合遍历。
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("张无忌"); list.add("周芷若"); list.add("赵敏"); list.add("张强"); list.add("张三丰"); for (String s : list) { System.out.println(s); } }
循环遍历的弊端
java8的Lambda让我们可以更加专注于做什么(What),而不是怎么做(How),这点此前已经结合内部类进行了对比说明。
>for循环的语法就是怎么做
>for循环的循环体才是做什么
我马上使用循环?因为要进行遍历。但循环是遍历的唯一方式吗?遍历是指每一个元素逐一进行处理,而并不是从第一个到
最后一个顺次处理的循环。前者是目的,后者是方式。
public class DoTest04 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("张无忌"); list.add("周芷若"); list.add("赵敏"); list.add("张强"); list.add("张三丰"); //只要张开头的元素,存储到一个集合中 ArrayList<String> listA = new ArrayList<>(); for (String s : list) { if (s.startsWith("张")){ listA.add(s); } } //只要姓名为3的人,存储到一个新集合中 ArrayList<String> listB = new ArrayList<>(); for (String s : listA) { if (s.length()==3){ listB.add(s); } } for (String s : listB) { System.out.println(s); } } }
使用Stream流的方式,遍历集合,对集合中的数据进行过滤
Stream流是JDK1.8之后出现的关注的是做什么,而不是怎么做
public class DoStream { 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)); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix