ArrayList数据类型中的remove()方法究竟返回了什么

Pri*_*ish 1 java arraylist

我在我的代码中使用list.remove()方法.我试图将返回的值作为参数传递给某个函数作为字符串,这样它既可以返回也可以删除对象.当我在for循环中打印它时,它只显示两个元素,它应该打印4.为什么会这样?

ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        for(int i=0;i<list.size();i++) {
            Log.d("Removed+++++++++++","++++"+list.remove(i));
           // queue.remove();
        }
Run Code Online (Sandbox Code Playgroud)

d /移除+++++++++++:++++一
d /删除+++++++++++:++++Ç

为什么它只打印a和c时应打印a,b,c,d?

Era*_*ran 7

它返回已删除的元素,如Javadoc中所述:

E java.util.List.remove(int index)

返回:
先前在指定位置的元素

它只打印"a"和"c",因为它只删除了"a"和"c".

从a中删除元素时ArrayList,以下元素的索引会递减.如果您希望循环删除所有元素,则必须考虑到这一点.否则你将跳过一半的元素.

for(int i=0;i<list.size();i++) {
    Log.d("Removed+++++++++++","++++"+list.remove(i));
    i--;
}
Run Code Online (Sandbox Code Playgroud)