【问题标题】:How to remove an item from an array at index?如何从索引处的数组中删除项目?
【发布时间】:2012-10-23 03:03:03
【问题描述】:

我会尽力澄清。

我有:

public static void main(String[] args) {
    int a[] = {5, 6 ,7 ,8 ,9 ,10};
    removeArray takeOff = new removeArray();
    takeOff.remove(3);

    for (int i = 0 ; i < a.length ; i++){
        System.out.print(" "+a[i]);
    }
}

应该打印出来:

5, 6, 7, 9, 10.

问题是remove方法,我应该怎么写。我有:

公共类 removeArray {

public void remove(int index) {       

    if (index > 0) {
        System.arraycopy(testThatArray.a, 0, testThatArray.a, 0, index);
    }

    if (index < testThatArray.a.length - 1) {
        System.arraycopy(testThatArray.a, index + 1, testThatArray.a, index, testThatArray.a.length - index - 1);
    }

}

}

还是不行吗?

更新: 我得到它来打印5 6 7 9 10 10,我怎样才能删除最后一个值?

【问题讨论】:

  • 那么问题是什么?如果您可以发布您的代码以便我们查看它,那就太好了
  • 我不是在写任何程序,只是一个关于如何编写一个按位置从数组中删除值的方法的一般问题,希望不要太宽泛...
  • 你应该使用List,否则,这就是你所需要的stackoverflow.com/questions/457453/…
  • 我不明白你为什么要创建一个新数组来删除一个项目。如果您有一个控制数组行为(添加、获取、搜索、删除操作)的类,那么只需使用 int size 来控制导航,当您想要删除元素时,您只需 移动所有项目到要删除左边一个空格的索引(我用代码比用文字更容易解释)。

标签: java arrays class methods


【解决方案1】:

您不能删除数组的索引或元素,因为它已经在内存中调整了大小,因此您不能使用 delete 但您可以放置​​两个值 { null 或 0 } 或您想要显示的另一个值,您已经得到这个。

【讨论】:

    【解决方案2】:

    数组无法调整大小。如果您想要一个可调整大小的集合,请使用 List&lt;Integer&gt;(例如 ArrayList&lt;Integer&gt;)。

    否则,您必须自己实现这一点,方法是制作比原始数组小一个元素的数组副本。然后将除指定索引处的值之外的所有值从旧数组复制到新数组。

    【讨论】:

    • 你确定吗?我在想一些事情,比如将旧数组(数组 x)中的所有内容复制到新数组(数组 b)中,直到要删除的索引,然后复制索引 + 1 处的所有内容,直到新数组的大小正确,这样可以吗是吗?
    • 是的。这不等同于我描述的步骤吗?
    • 对不起,当您建议使用 List&lt;Integer&gt; 我的坏时,我停止阅读...但这就是我想知道的,因为我无法将其放入代码中,我想我是做错了......(就像我知道该怎么做,只是不知道怎么写......)
    • 您不只是使用列表的任何特殊原因?
    • 我会补充一点,您可能希望将数组添加到要删除的方法的参数中,然后返回新数组。否则该数组超出范围。除非它是全球性的。
    【解决方案3】:

    数组是固定长度的集合。你不能删除一个值。如果您不想添加和删除内容,请使用 List 或 ArrayList

    【讨论】:

      【解决方案4】:

      创建一个新数组或将其大小调整为实际数组的大小减一并循环遍历数组中的所有值以填充新数组,但跳过 .remove 方法中指定的值。

      【讨论】:

        【解决方案5】:

        ArrayUtils#removeElement 可能会做你想做的事。但是,请考虑改用 List。

        【讨论】:

          猜你喜欢
          • 2021-04-20
          • 2023-03-10
          • 2011-06-19
          • 2021-06-18
          • 1970-01-01
          • 2019-09-22
          • 2020-09-03
          • 2021-12-06
          相关资源
          最近更新 更多