传统集合的多步遍历代码
Stream流
说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"I0流"呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,
用于解决已有集合类库既有的弊端。
传统集合的多步遍历代码
几乎所有的集合(如collection 接口或Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,
最典型的就是集合遍历。
代码:
ArrayList<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); list.add("赵六"); for (String s : list) { System.out.println(s); } }
这是一段非常简单的集合遍历操作:对集合中的每一个字符串都进行打印输出操作
循环变量的弊端
java 8的Lambda让我们可以更加专注于做什么 而不是怎么做 这点此前已经结合内部类进行了对比说明 现在 我们仔细体会一下代码 可以看到:
- for循环的语法就是“怎么做”
- for循环的循环体才是“做什么”
要进行遍历 但是是遍历的唯一方式吗 遍历是指每一个元素逐一进行处理 而并不是从第一个到最后一个顺次处理的循环 前者是目的 后者是方式
试想一下 如果希望对集合中的元素进行筛选过滤:
1.将集合A根据条件一过滤为子集B
2.然后再根据条件二过滤为子集C
使用传统的方式,遍历集合,对集合中的数据进行过滤
public static void main(String[] args) { // 创建一个List集合,存储姓名 ArrayList<String> list = new ArrayList<>(); list.add("张无忌"); list.add("周芷若"); list.add("赵敏"); list.add("张三"); list.add("张三丰"); // 对list集合中的元素进行过滤,只要以张开头的元素,存储到新的集合中 ArrayList<String> listA = new ArrayList<>(); for (String s : list){ if (s.startsWith("张")){ listA.add(s); } } // 对listA集合进行过滤,只要姓名长度为3的人,存储到一个新集合中 ArrayList<String> listB = new ArrayList<>(); for (String s : listA){ if (s.length() == 3){ listB.add(s); } } // 遍历listB集合 for (String s : listB){ System.out.println(s); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix