【发布时间】:2019-01-04 12:24:04
【问题描述】:
据我所知,以下是删除 ArrayList 中元素的步骤。
- 无需对目标元素做任何事情
- 从删除元素后的 1 到最后一个元素沿数组迭代
- 将每个元素复制到位置 1 之前
- 将最后一个元素设置为
null
为什么不直接将我们要删除的元素设置为null?只需一步。
谁能解释上述方案的优点?提前致谢。
【问题讨论】:
-
把列表想象成一本书,所有页面都写着。删除一个元素就像从书中删除一个页面。您提出的建议更像是擦除页面上的内容 - 这根本不是同一个操作。 (如果您的特定用例很好,列表的大小保持不变等,那么只需致电
list.set(index, null)- 但在大多数情况下,这不是必需的。) -
就是remove和replace的区别。在后一种情况下,您可以将元素替换为空对象。
-
@DaisyShipton 这将是一个很好的答案;-)
-
因此,如果列表中的
null表示该索引处的元素已“删除”,那么如果我想实际上 将null存储为元素怎么办?您如何区分已删除的元素和 实际null元素?。 -
您知道
ArrayList有一些remove方法 - 您 不必执行所有这些步骤! (这些是数组所必需的)-null是放入ArrayList的有效元素,程序员为什么需要它
标签: java list loops arraylist null