Java中,遍历List集合有以下四种方式
1.增强for循环(foreach):这种方式是最简单的,也是最易读的。它直接对集合中的每个元素进行操作,不需要额外的迭代器或索引变量。但是,这种方式不能在遍历过程中修改集合的结构(例如添加或删除元素)。
2.使用迭代器:迭代器提供了一种通用的遍历集合的方式,可以在遍历过程中修改集合的结构。但是,使用迭代器需要更多的代码,并且可能不如增强for循环直观。
3.使用ListIterator:ListIterator是迭代器的子接口,提供了在两个方向上遍历列表的能力,以及修改列表元素的能力。这种方式适用于List集合,因为List接口有顺序的概念,允许我们在列表中向前或向后移动。
4.使用toArray方法:将集合转换为数组后,可以使用传统的for循环来遍历。这种方式适用于任何类型的集合,但是需要额外的数组存储空间。
点击查看代码
package com.itheima.javase; import java.util.*; public class CollectionDemo1 { public static void main(String[] args) { Collection<User> userList=new ArrayList<>(); initUserList(userList); traverseUserList(userList); } private static void traverseUserList(Collection<User> userList) { // 使用Lambda表达式遍历并打印用户信息 userList.forEach(user -> System.out.println(user)); System.out.println("==================================================="); // 获取迭代器 Iterator<User> iterator = userList.iterator(); // 判断是否有下一个元素 while(iterator.hasNext()){ // 获取下一个元素 User user = iterator.next(); // 打印用户信息 System.out.println(user); } System.out.println("==================================================="); // 使用增强for循环遍历用户列表 for(User user: userList){ // 打印用户信息 System.out.println(user); } System.out.println("==================================================="); // 将用户列表转换为数组 Object[] objects = userList.toArray(); // 遍历数组 for(int i=0;i<objects.length;i++) // 打印用户信息 System.out.println(objects[i]); System.out.println("==================================================="); // 将用户列表转换为ArrayList List<User> list = new ArrayList<>(userList); // 获取列表迭代器 ListIterator<User> listIterator = list.listIterator(); // 判断是否有下一个元素 while(listIterator.hasNext()){ // 获取下一个元素 User user = listIterator.next(); // 打印用户信息 System.out.println(user); } System.out.println("==================================================="); } private static void initUserList(Collection<User> userList) { userList.add(new User("张三",25,"男")); userList.add(new User("李四",23,"男")); userList.add(new User("王五",24,"男")); userList.add(new User("赵六",13,"男")); } } class User{ private String name; private int age; private String gender; public User() { } public User(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", gender='" + gender + '\'' + '}'; } }
分类:
Java SE
, Java SE / 随笔
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库