java的list的remove_Java list中remove

本文探讨了在Java中使用List时的常见错误与解决方案,特别是如何避免在foreach循环中使用add或remove方法导致的异常,并提供了两种有效的方法来实现元素的安全删除。

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

Java list中remove

java list相关的操作:易错点

是在foreach循环list的时候,不能在循环体中用add与remove方法,不然会爆出非法修改错误

在利用for 循环remove的时候,list中的元素会自动向前补齐,会导致元素没有删除完毕的问题,解决的方案主要有倒着遍历以及遍历一个之后修改i

import java.util.*;

class Solution{

/**

java list相关的操作:易错点

- 是在foreach循环list的时候,不能在循环体中用add与remove方法,不然会爆出非法修改错误

- 在利用for 循环remove的时候,list中的元素会自动向前补齐,会导致元素没有删除完毕的问题,解决的方案主要有倒着遍历以及遍历一个之后修改i

*/

public static void main(String[] args) {

ArrayList arr = new ArrayList<>();

int[] a = new int[]{0,1,2,3,4,5,6,7,8,9};

for(int i:a) arr.add(i);

/**

for(int i:arr){

System.out.println(i);

// arr.add(9);

// arr.remove(1);

}

*/

/**

出现最后的size不是0的原因是因为,remove之后,后面的元素会自动向前移,在i=i+1的时候,就越过了这个元素,也就是说没有访问这个元素

*/

System.out.println("tets 1 ,from 0 to n , before remove , the arr`s length is "+arr.size());

for(int i = 0;i

System.out.println("test 1 , from 0 to n , after remove , the arr`s length is "+arr.size());

/**

解决这个问题,方法1:从n到0进行遍历

*/

arr.clear();

for(int i:a) arr.add(i);

System.out.println("tets 2 ,from n to 0 , before remove , the arr`s length is "+arr.size());

for(int i = arr.size() - 1;i>=0;i--) arr.remove(i);

System.out.println("test 2 , from n to 0 , after remove , the arr`s length is "+arr.size());

/**

解决这个问题,方法2:每移除一个元素以后再把i移回来

*/

for(int i:a) arr.add(i);

System.out.println("tets 3 ,modify i , before remove , the arr`s length is "+arr.size());

for(int i = 0;i

arr.remove(i);

i-=1;

}

System.out.println("test 3 , modify i , , after remove , the arr`s length is "+arr.size());

}

}

3694a1e77a50a25579bec2e214fa51fd.png

4f98cadc8a3ffb4870399b747afb3a13.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值