我在我的代码中使用了 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/