将数组中的所有内容向下移动作为删除的一种形式 java iterable
Posted
技术标签:
【中文标题】将数组中的所有内容向下移动作为删除的一种形式 java iterable【英文标题】:shifting everything down in an array as a form of deletion java iterable 【发布时间】:2017-08-22 07:26:50 【问题描述】:所以我试图通过在删除后将所有内容向下移动来从数组中删除一个元素,这就是我到目前为止所拥有的
for (int i = 0; i < numShapes; i++)
shapes[i] = shapes[i-1];
numShapes--;
所以如果我的数组包含
Joe Jen Jess
我调用了我的 .next() 和 .remove() 方法,它看起来像
Joe Jess null
我的 .next() 方法返回迭代器中的下一项,而我的 remove 方法旨在删除该项
remove method
public void remove() throws IllegalStateException
if (cursor <= numShapes-1 || cursor == 0)
throw new IllegalStateException();
if (numShapes == 0) throw new NoSuchElementException();
for (int i = 0; i < numShapes; i++)
shapes[i] = shapes[i-1];
numShapes--;
remove 的实现是否正确?删除后是否正确移动元素?
【问题讨论】:
您的具体问题是什么?我在您上面的帖子中没有看到任何内容。 你有什么问题? 我的 remove() 方法没有正确转换 形状[i] = 形状[i-1];当 i=0 时,此行不适用于第一轮。形状[0]= 形状[-1] 不正确。它会给出异常 您将元素移动到错误的方向并从无效索引开始。是时候在调试器中一次单步执行代码了。 【参考方案1】:您需要找到要删除的元素的索引,然后使用该索引移动其他元素并将最后一个值设置为null
,如下示例代码:
int index = -1;
String searchStr = "FindMe";
for (int i = 0; i < array.length; i++)
if (searchStr.equals(array[i]))
index = i;
break;
if (index > -1)
for (int i = index; i < array.length - 1; i++)
array[i] = array[i+1];
array[array.length - 1] = null;
【讨论】:
以上是关于将数组中的所有内容向下移动作为删除的一种形式 java iterable的主要内容,如果未能解决你的问题,请参考以下文章