将数组中的所有内容向下移动作为删除的一种形式 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的主要内容,如果未能解决你的问题,请参考以下文章

无法删除 Pig 中的特殊字符

删除表格后如何将所有表格向下移动?

ja对象属性—枚举检查删除

为啥无边框的 Kivy Window 会将内容向下和向右移动?

单击另一个 div 时,移动到具有类的下一个 div

将drawable中的图像作为文件读取