Java List遍历

本文介绍了在Java中如何使用普通for循环遍历并修改List元素,强调了在遍历过程中修改List可能导致的问题,特别指出for each循环不适用于此类操作,因为这将引发错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.ArrayList;
import java.util.List;

public class forEach_Iterator {
    public static void main(String[] args) {
        List<Integer> integerList = new ArrayList<>();
        integerList.add(1);
        integerList.add(2);
        integerList.add(3);
        for (int i = 0; i < integerList.size(); i++) {
            if (integerList.get(i) == 1){
                integerList.remove(i);
                i--;
            }
        }
    }
}

用普通的for循环可以对list元素进行修改。
(但要注意需要计数器减一,否则会漏掉一个)

import java.util.ArrayList;
import java.util.List;

public class forEach_Iterator {
    public static void main(String[] args) {
        List<Integer> integerList = new ArrayList<>();
        integerList.add(1);
        integerList.add(2);
        integerList.add(3);
        for (int e :
                integerList) {
            if (e == 1)
                integerList.remove(e);
        }
    }
}

for each对list元素修改报错。

Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
	at java.util.ArrayList$Itr.next(ArrayList.java:859)
	at forEach_Iterator.main(forEach_Iterator.java:16)

意思就是不能在遍历的时候修改。

### 遍历Java中的List的方法 在Java中,可以通过多种方式来遍历`List`集合。以下是几种常见的方法及其示例: #### 使用增强型for循环 增强型for循环是一种简单而直观的方式来遍历列表中的元素[^1]。 ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); list.add("Cherry"); for (String item : list) { // 增强型for循环 System.out.println(item); } } } ``` #### 使用迭代器(Iterator) 通过`Iterator`接口可以显式地控制遍历过程,并支持在遍历时删除元素的操作。 ```java import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Dog"); list.add("Cat"); list.add("Bird"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { // 使用hasNext()判断是否有下一个元素 String animal = iterator.next(); // 获取当前元素 System.out.println(animal); if ("Cat".equals(animal)) { iterator.remove(); // 安全移除元素 } } System.out.println(list); // 输出剩余的元素 } } ``` #### 使用Lambda表达式和forEach方法 自Java 8起,引入了`forEach`方法以及Lambda表达式,使得代码更加简洁[^3]。 ```java import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> languages = Arrays.asList("Java", "C++", "Scala", "Groovy"); // 创建一个不可修改的List[^4] languages.forEach(language -> { // Lambda表达式配合forEach System.out.println(language.toUpperCase()); }); } } ``` #### 结合Stream API进行过滤和处理 同样基于Java 8的功能,还可以利用流操作符对数据集执行复杂的查询或转换。 ```java import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); numbers.stream() .filter(n -> n % 2 == 0) // 过滤偶数 .forEach(System.out::println); // 打印结果 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值