小编典典

从基本数组中删除元素

java

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

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

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一起使用,而不能与原语一起使用。

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


阅读 201

收藏
2020-11-26

共1个答案

小编典典

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

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知道/找到它表示敬意。)

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

2020-11-26