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

标签 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();
        }

D/Removed+++++++++++: ++++a
D/Removed+++++++++++:++++c

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

最佳答案

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

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

Returns:
the element previously at the specified position

它只打印“a”和“c”,因为它只删除了“a”和“c”。

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

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

关于java - ArrayList 数据类型中的 remove() 方法究竟返回什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48049235/

相关文章:

java - 是否可以为单元测试目的强制设置一个内部变量?

java - arraylist 未打印正确的数据

java - 对象和数组列表

java - 测试类不认为我的 ArrayList 是 ArrayList

java - 序列化 ArrayList<object> 二进制文件的数据结构

java - 在 arraylist 中缓存 iterable 以在 reducer 中迭代两次不起作用

java - 使用 substring() 看似不等价的字符串

java - 在二维数组中移动的最佳方式(棋盘游戏)

java - 等效于 Java 中的 C# 枚举标志属性?

java - 3.3 到 3.4 之间的 Mule 消息不兼容问题