gpt4 book ai didi

java - 当我们在迭代 arraylist 时调用 list.remove 之后。元素没有被删除。我得到输出[2,4]。其背后的原因是什么?

转载 作者:行者123 更新时间:2023-12-01 16:47:16 25 4
gpt4 key购买 nike

package com.unisys.geeks.arrays;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.List;

public class RemoveElementFromIteration {

static List<Integer> iterateElements() {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i = 0; i < list.size(); i++) {
list.remove(i);
}
return list;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
try {
List<Integer> list = iterateElements();
System.out.print(list);
}
catch (ConcurrentModificationException e) {
System.out.println(e.getMessage());
}
}

}

最佳答案

Oracle says this :

remove(int index)

Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.

List = [1,2,3,4]

在第一个循环计数 (i = 0) 中,您删除索引 0 上的元素,在您的情况下为 1。

List = [2,3,4]

在第二个循环计数 (i = 1) 中,您删除了索引 1 处的元素。但请记住,列表是动态的。因此,在您删除列表中的整数 1 之后。列表的大小发生变化。现在,在索引 1 处,您将找到整数 3。删除 3 后,您将得到以下结果:

List = [2,4]

现在,循环计数器将增加到 2,使循环条件为 false。您将看到该列表

[2,4]

关于java - 当我们在迭代 arraylist 时调用 list.remove 之后。元素没有被删除。我得到输出[2,4]。其背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48227034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com