1

我有一个ArrayList,我打算java.util.ArrayList.remove()在 android 中使用该方法,但我的问题是你是否有一个ArrayList在以下索引处具有值的值,然后在索引处删除,其他索引是否会增加?这是一种更简单的方法来理解我要问的内容:

起始数组列表:
----------------------
| 索引 | 价值 |   
----------------------
| 0 | “一个” |
| 1 | "b" |
| 2 | "c" |
| 3 | "d" |
| 4 | "e" |
----------------------

然后我在索引 3 处删除新数组是数组 A 还是数组 B

数组列表 A:数组列表 B:
------------------------------------ ------------
| 索引 | 价值 | | 索引 | 价值 |   
------------------------------------ ------------
| 0 | “一个” | | 0 | “一个” |
| 1 | "b" | | 1 | "b" |
| 2 | "c" | | 2 | "c" |
| 3 | | | 3 | "e" |
| 4 | "e" | ----------------------
----------------------
4

3 回答 3

6

它将是B,如果您使用索引操作修改数组列表,ArrayList将按照您的理解重新排列。这就是为什么ArrayLists如果有太多的修改是昂贵的

这就是remove(int)文档所说的

移除此列表中指定位置的元素。将任何后续元素向左移动(从它们的索引中减去 1)。

于 2013-09-10T08:49:09.843 回答
0

如果您想要这样的东西,没有人会碰到您的删除位置,请尝试在该位置插入一个空对象,它会为此目的保持该位置。

事实上,更好的解决方案是创建一个虚拟对象,它是您的 java 空对象版本。但是这个虚拟对象会让您灵活地添加一些功能来支持您的逻辑和程序流程。

于 2013-09-10T08:58:39.193 回答
0

您的 ArrayList 将像您的B示例。

这正是 ArrayList 的工作原理,它们正在重新排列。

于 2013-09-10T08:54:10.560 回答