当前位置: 首页 > 面试题库 >

从基本数组中删除元素

乌骏
2023-03-14
问题内容

我有一个原始类型数组,我想从中删除指定索引处的元素。正确而有效的方法是什么?

我正在寻找以下面提到的方式删除元素

long[] longArr = {9,8,7,6,5};
int index = 1;

List list = new ArrayList(Arrays.asList(longArr));
list.remove(index);
longArr = list.toArray(); // getting compiler error Object[] can't be converted to long[]

但是上述方法看起来只能与Object一起使用,而不能与原语一起使用。

还有其他选择吗?我不能使用任何第三方/附加库


问题答案:

您需要创建一个新数组并复制元素。例如这样的事情:

public long[] removeElement(long[] in, int pos) {
    if (pos < 0 || pos >= in.length) {
        throw new ArrayIndexOutOfBoundsException(pos);
    }
    long[] res = new long[in.length - 1];
    System.arraycopy(in, 0, res, 0, pos);
    if (pos < in.length - 1) {
        System.arraycopy(in, pos + 1, res, pos, in.length - pos - 1);
    }
    return res;
}

注意:以上尚未经过测试/调试。

您也可以使用for循环进行复制,但arraycopy在这种情况下应更快。

org.apache.commons.lang.ArrayUtils.remove(long[], int)方法最有可能像上面的代码一样工作。如果不需要避免使用第三方开放源代码库,则最好使用该方法。(对@Srikanth
Nakka知道/找到它表示敬意。)

之所以不能使用列表来执行此操作,是因为列表要求元素类型是引用类型。



 类似资料:
  • 问题内容: 有什么快速(好看的)方法可以从Java中的数组中删除元素? 问题答案: 你可以使用的。

  • 问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,

  • 问题内容: 我有一个数组例如: 谁能告诉我如何从数组中删除一个元素。例如,我要删除项目“ b”,以使数组如下所示: 我找不到解决办法。到目前为止,我在这里发现的内容不适用于我:( 问题答案: 您不能从数组中删除元素。Java数组的大小是在分配数组时确定的,不能更改。您能做的最好的事情是: 在相关位置分配给数组;例如 这给您带来了处理值所在数组中的“孔”的问题。(在某些情况下,这不是问题……但是在大

  • 问题内容: 有没有一种简单的方法可以使用PHP从数组中删除元素,从而不再包含该元素? 我以为将它设置为可以实现,但是显然不起作用。 问题答案: 有多种删除数组元素的方法,其中某些方法对某些特定任务比其他任务更有用。 如果只想删除一个数组元素,则可以使用或。 另外,如果您具有值并且不知道要删除元素的键,则可以使用该键来获取键。 请注意,使用数组键时不会更改/重新索引。如果要重新索引键,则可以使用它,

  • 问题内容: 我有一个看起来像这样的PHP数组: 当我var_dump数组值我得到这个: 我想删除“ 已完成” 和“ 标记为垃圾邮件” 。我知道可以,但是问题是有时索引号可能会不同。 是否可以通过匹配值名称而不是键值来删除它们? 问题答案: 您的数组很奇怪: 为什么不只使用as索引,以及as …值? 如果这样声明数组,会不会容易得多: 那将允许您使用as 的值作为索引来访问数组。 而且您将能够使用函

  • 问题内容: 在下面的随机数组中: 您能否告诉我如何删除特定位置的元素。例如,如何删除? 我了解这里仅用于列表类型DS。 问题答案: 很简单,只需在列表项上弹出即可。