一、利用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方法,指定待删除元素的下标,即可实现删除操作。
Listlist = 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方法将剩余元素映射为新数组元素,并将其转换成一个新数组。