【问题标题】:No zero item in Java ArrayListJava ArrayList 中没有零项
【发布时间】:2016-10-15 15:42:38
【问题描述】:

在开发 Android 应用程序时,我遇到了以下情况:非空 Java ArrayList 中没有零索引的元素。问题的原因与以下事实有关,即当列表非空时,我有时会使用 list.remove(0) 方法删除零索引项。尽管如此,remove 方法的规范说它“将任何后续元素向左移动(从它们的索引中减去一个)”。因此,当我得到一个没有零元素的非空列表(第一个元素的索引为 1)时,我无法理解情况的原因(有时会发生)。通过在 list.get(0) 上获取 NullPointerException 和在 Android Studio 调试器中查看 ArrayList 内容,我可以看到没有零元素。

Debugging screenshot - ArrayList's shapshot with no zero item in Android Studio

【问题讨论】:

  • 你能把代码贴出来告诉我们哪一行出错了吗?
  • 不是重复的。我调用 list.get(0) 来获取零索引元素

标签: java android arraylist


【解决方案1】:

非空列表has always index 0 中的第一个元素。如文档所述:

列表(如 Java 数组)是从零开始的

您在调试屏幕截图中看到的只是列表中元素的一种可视化方法。所谓的 1 不是索引,而是位置。所以 1 留作第一个元素。

【讨论】:

  • 但是当我尝试调用 list.get(0) 在这种情况下我得到异常,其中 0 应该是索引。我想提醒一下,没有 0 元素的情况很少发生(有时,不是每次)。在普通情况下(正常情况),在调用 list.remove(0) 之后,我们会移动列表并从 0 元素开始,因此我们可以调用 get(0) 但有时会发生上述情况。
  • 检查列表调用 list.size() 的大小。如果第 0 个元素不存在,则列表为空。
猜你喜欢
  • 2015-05-12
  • 2020-01-25
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 2017-04-03
  • 2018-02-04
相关资源
最近更新 更多