java - 从数组列表中删除元素

标签 java arraylist collections core

谁能解释一下 ArrayListremove() 是如何工作的?

public class ListTest { 
    public static void main(String[] args) {
        List list = new ArrayList();
        for(int i=0;i<10;i++)
        {
            list.add(i);
        }
        System.out.println("Size of list before removing :"+list.size());

        for(int i=0;i<list.size();i++)
        {
            list.remove(i);         
        }
        System.out.println("Size of list after removing all elements :"+list.size());
    }
}

输出

删除前列表的大小:10
删除所有元素后列表的大小:5

我做错了什么?

最佳答案

list.remove(i); 移动被删除元素后面的所有元素的索引。因此,在调用 list.remove(0) 后,位置 1 处的前一个元素将移动到位置 0,并且循环将永远不会删除它,因为 i 会递增。正如您所看到的,您的循环将只删除一半的元素。

此循环将删除所有元素:

while(list.size()>0)
{
    list.remove(0);
}

关于java - 从数组列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099026/

相关文章:

java - Spring 数据 : string lookup in complex object

用于非焦点选择的 JavaFX ListView 和 TableView CSS

javascript - 使用 javascript 和 jquery 连接数组

java - 如何通过构造初始化HashSet值?

scala - 如何解释Map.map结果

java - getHeight() 如何在 java 中工作,尤其是在 paintComponent 中

java - 为什么ProGuard输出的JAR文件中没有class文件?

java - 仅将子类实例添加到我的集合类

Java ArrayList复制更改原始值

java - Java PriorityQueue底层数据结构