【问题标题】:Java find last member in index of arrayJava在数组索引中找到最后一个成员
【发布时间】:2012-10-14 09:36:08
【问题描述】:

假设我有一个大小为 10 的数组,索引范围为 0 到 9。 我添加了一堆元素并在索引 6 处停止添加。所以使用 array.length,我可以知道数组的大小是 10,但是如何找到包含最后一个值的索引,然后是空的?我是否应该做一个循环并在 index == null 处停止?

我通过创建一个动态数组来模仿数组列表,该数组在大小满时增长。

Arg,忘了告诉大家,如果数组是int,那么空的slots就是0?

【问题讨论】:

  • 你应该改用ArrayList
  • 你想迭代数组吗?还是我理解错了?好的,我弄错了.. 但你绝对应该使用ArrayList
  • 你跟踪它,就是这样。不要依赖空值——如果你把空值放进去怎么办?它会消失。
  • 这是我的任务...使用普通数组并制作一个动态数组,该数组有一种方法可以在容量被填满时制作一个更大的数组...。我不允许使用数组列表的人。 ..
  • @RyokoNela 你不能让传统数组表现得像一个动态数组。它有一个固定的大小。这是无法改变的。

标签: java arrays indexing


【解决方案1】:

使用java.util.ArrayList。您无需考虑索引,它是可调整大小的数组实现。

在默认情况下创建数组时,所有值都是空的,因此如果您不在任何索引处插入任何值(可能在数组的末尾或开头或中间),它将只是空。所以你应该放空检查来验证。

【讨论】:

  • 正如我所说的,我让一些东西实现了适用于 arraylist 的相同原则......这就是我需要所有这些东西的原因。
【解决方案2】:

既然这是你的赋值,一个技巧就是添加一个变量来跟随添加的元素数量。

因此,您可以拥有一个public int size = 0 变量并更改您的添加和删除操作,以便在您添加或删除元素时增加和减少此变量。

然后在你的 add 方法中,你可以简单检查一下是否需要扩展数组

if (size == array.length)
   expandArray

【讨论】:

  • 我可以将检查变量声明为 add 方法的本地变量吗?我不允许添加更多的类字段。等等,实际上规范并没有禁止我添加更多...看起来我可以添加一个类字段。
  • 如果您将其设为本地,则每次调用 add 方法时它将被设置为零(因为本质上您将拥有此变量的新实例)因此它将不起作用,如果您不能添加类字段,然后我看不到其他选项可以在添加新元素之前迭代数组以检查它是否已填充。奇怪的是你不能添加类变量。
  • 如果您无法添加变量,那么检查数组是否已填充的一个技巧是检查最后一项是否不为空(或零),因此检查 if (array[size] != null) 可以帮助假设:您按顺序添加元素(从 0 到 size 不跳过元素)并且 null(或在 int 数组的情况下为 0)不是有效数字
猜你喜欢
  • 2020-04-24
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
相关资源
最近更新 更多