您的位置:

Java实现数组元素删除

一、利用Java自带方法实现数组元素删除

Java自带的Arrays类提供了一个方法可以在数组中删除一个元素,该方法是Arrays.copyOfRange方法,这个方法可以通过指定待删除元素的下标和元素个数,返回一个新的数组,新数组中不包含被删除的元素。

int[] oldArray = {1, 2, 3, 4, 5};
int index = 2; // 删除下标为2的元素(3)

int[] newArray = Arrays.copyOfRange(oldArray, 0, index);
System.arraycopy(oldArray, index + 1, newArray, index, oldArray.length - index - 1);

上述代码中,我们先使用copyOfRange方法创建一个新数组newArray,该数组包含了0到待删除元素下标之间的元素(即1和2)。然后我们使用System.arraycopy方法将旧数组中待删除元素之后的元素复制到新数组中,从待删除元素的下标对应位置开始覆盖。

二、手动实现数组元素删除

如果我们需要在自己的代码中手动实现数组元素的删除,可以采用以下方法:

int[] oldArray = {1, 2, 3, 4, 5};
int index = 2; // 删除下标为2的元素(3)

int[] newArray = new int[oldArray.length - 1];
int j = 0;

for (int i = 0; i < oldArray.length; i++) {
    if (i != index) {
        newArray[j] = oldArray[i];
        j++;
    }
}

上述代码中,我们首先创建一个新数组newArray,该数组的长度比旧数组小1。然后我们使用一个for循环遍历旧数组中的每个元素,如果当前元素的下标不是待删除元素的下标,则将该元素复制到新数组中。

三、List集合的方法实现数组元素删除

如果我们可以使用List集合来代替数组,那么删除一个元素就特别容易了。这个时候我们只需要使用List提供的remove方法,指定待删除元素的下标,即可实现删除操作。

List list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
list.remove(2); // 删除下标为2的元素(3)

int[] newArray = list.stream().mapToInt(Integer::intValue).toArray();

  

上述代码中,我们首先使用Arrays.asList方法将一个数组转换成List集合。然后我们使用List提供的remove方法删除待删除元素。最后,我们通过StreamAPI将List集合转换成一个新数组。

四、Java8新特性的方法实现数组元素删除

Java8为我们提供了一个非常方便的操作数组的新特性:stream。使用stream可以极大地简化数组的操作。以下是使用stream实现数组元素删除的代码:

int[] oldArray = {1, 2, 3, 4, 5};
int index = 2; // 删除下标为2的元素(3)

int[] newArray = IntStream.range(0, oldArray.length)
                           .filter(i -> i != index)
                           .map(i -> oldArray[i])
                           .toArray();

上述代码中,我们使用IntStream.range方法生成一个从0到旧数组元素个数之间的整型流。然后我们使用filter方法过滤掉下标为待删除元素下标的元素,最后使用map方法将剩余元素映射为新数组元素,并将其转换成一个新数组。