一个很简单的问题😭:遍历int数组并删掉所有偶数
一开始想的很简单,使用for循环和if判断进行遍历,如果是偶数则remove。后来发现和arraylist记混了,数组删除的话必须依次向前移一位,然后去掉最后一位。
int[] line = {1,2,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
for (int i = 0; i < line.length; i++) {
if (line[i]%2 == 0){
for (int j = i; j < line.length-1; j++) {
line[j]= line[j+1];
}
//去掉最后一个元素
line = Arrays.copyOf(line,line.length-1);
//i减一,否则会跳过一个元素
i--;
}
}
for (int a:line) {
System.out.println(":"+a);
}
使用迭代器#
ArrayList<Integer> line = new ArrayList<>();
line.add(1);line.add(2);line.add(3);line.add(4);line.add(4);line.add(6);line.add(7);line.add(8);line.add(9);line.add(10);
//使用迭代器
Iterator<Integer> it = line.iterator();
while (it.hasNext()){
int i = it.next();
if (i%2 == 0){
it.remove();
}
}
for (int a :line) {
System.out.println(":"+a);
}
for-each中使用ArrayList的remove方法#
int i = 0;
for (int a:line) {
if (a%2 == 0){
line.remove(i);
}
i++;
}
报错,原因在于从line中remove之后,foreach循环的数组长度并未更新,foreach内部使用的是ArrayList的迭代器,迭代器并未感知到有元素从list中被移除,所以会出现这个错误。
作者:Charlotte
出处:https://www.cnblogs.com/charlottepl/p/15769839.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
你可以在这里自定义其他内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理