我在我的代码中使用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?
它返回已删除的元素,如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)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |