for遍历list删除出错

本文介绍在Java中使用ArrayList时如何正确地从集合中删除元素,避免使用增强for循环进行删除操作,并展示了使用迭代器(Iterator)进行删除的方法。
import java.util.ArrayList;

public class Test2
{
    public static void main(String[] args)
        throws InterruptedException
    {
        ArrayList<A> list = new ArrayList<A>();
        A a1 = new A(1, "a1");
        A a2 = new A(2, "a2");
        A a3 = new A(3, "a3");
        list.add(a1);
        list.add(a2);
        list.add(a3);
        System.out.println(list);
        for (A a : list)
        {
            if (a.name.equals("a2"))
            {
                list.remove(a);
            }
        }
        System.out.println(list);
    }
}

class A
{
    int id;

    String name;

    public A(int id, String name)
    {
        super();
        this.id = id;
        this.name = name;
    }

}

执行结果:
1.
1

2.
2
3.
这里写图片描述
所以涉及删除list等的时候不要使用for循环的两种方法,而应该使用迭代

 Iterator<A> it=list.iterator();
        while(it.hasNext())
        {
            A a=it.next();
            if(a.name.equals("a3"))
            {
                it.remove();
            }
        }

ok

### Android中遍历List集合的方式 在Android开发中,`List` 是一种常用的集合数据结构。以下是几种常见的 `List` 遍历方式及其实现原理: #### 使用传统的for循环 通过索引访问 `List` 的每一个元素是最基本的遍历方式之一。这种方式适用于需要知道当前索引的情况。 ```java for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } ``` 这种方法的核心在于利用 `list.size()` 获取列表长度,并逐一遍历每个位置上的元素[^1]。 #### 使用增强型for循环(For-Each) 增强型for循环是一种更简洁的方式来遍历 `List`,无需手动管理索引变量。 ```java for (Object item : list) { System.out.println(item); } ``` 此方法内部依赖于迭代器机制来逐一获取元素,因此更加安全且不易出错。 #### 使用Iterator迭代器 `Iterator` 提供了一种通用的集合遍历方式,允许开发者显式调用 `next()` 和 `hasNext()` 方法控制流程。 ```java Iterator<Object> iterator = list.iterator(); while (iterator.hasNext()) { Object item = iterator.next(); System.out.println(item); } ``` 该方法的优势在于支持删除操作,在某些场景下非常有用。 #### 使用Lambda表达式(Java 8及以上版本) 如果项目使用的是 Java 8 或更高版本,则可以借助 Lambda 表达式简化代码逻辑。 ```java list.forEach(item -> System.out.println(item)); ``` 这种写法不仅提高了可读性,还充分利用了函数式编程的思想。 #### 最佳实践建议 对于大多数情况而言,推荐优先采用 **增强型for循环** 或者 **Lambda表达式** 来完成 `List` 的遍历任务。这两种方案既简单又高效,同时能够有效减少潜在错误的发生概率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值