21xrx.com
2024-12-22 18:07:22 Sunday
登录
文章检索 我的文章 写文章
Java数组删除指定元素
2023-07-07 20:47:37 深夜i     --     --
Java 数组 删除 指定元素

Java数组是一种重要的数据结构,它能够存储大量的数据,并能够方便的进行数据的访问和处理。然而,在使用Java数组的过程中,经常会遇到需要删除指定元素的情况,这时就需要使用一些特定的方法。

方法一:使用ArrayList类

在Java中,ArrayList类提供了一种简单的方法来删除数组中的指定元素。要使用该方法,需要先将数组转换为ArrayList对象,然后使用ArrayList类提供的remove()方法来删除指定元素。

示例代码如下:


// converting array to ArrayList

ArrayList<Integer> list = new ArrayList(Arrays.asList(arr));

int element = 5;

// removing specified element

list.remove(Integer.valueOf(element));

// converting back to array

Integer[] newArr = list.toArray(new Integer[list.size()]);

上述代码首先将数组arr转换为ArrayList对象,并将要删除的元素指定为5。然后,使用ArrayList类的remove()方法从ArrayList列表中删除元素。最后,将ArrayList对象转换回原始数组。此方法的优点是代码简单易读,但是会创建一个额外的ArrayList对象。

方法二:使用Stream API

另一种删除数组中指定元素的方法是使用Java 8中引入的Stream API。该API提供了一个便利的方法,可以通过一个短小的代码行来删除数组中指定的元素。

示例代码如下:


int[] arr = 4;

int element = 4;

arr = Arrays.stream(arr)

      .filter(e -> e != element)

      .toArray();

在上述代码中,我们使用Stream API中的filter()方法来删除数组中的指定元素。首先,使用Arrays.stream()方法将数组转换为IntStream对象;然后调用filter()方法,用条件(在本例中为e != element)来保留要删除的元素;最后,将过滤后的Stream对象转换回基本数组。这个方法不需要使用额外的对象,但可能不够简单易读。

在JDK 11中,如果您使用的是支持Var类型的平台(例如JShell),可以使用以下代码来删除数组中的指定元素:


int[] arr = 5;

int element = 4;

arr = Arrays.stream(arr)

      .filter(var x -> x != element)

      .toArray();

这里使用了关键字“var”来定义函数式接口中的变量类型。

方法三:使用System.arraycopy()

还有一个方法,它使用System.arraycopy()方法来删除数组中的指定元素。该方法的基本思路是,通过移动数组元素来覆盖要删除的元素,并将数组的大小减小1个元素。

示例代码如下:


int[] arr = 1;

int element = 4;

int[] newArr = new int[arr.length - 1];

int j = 0;

for (int i = 0; i < arr.length; i++) {

  if (arr[i] != element) {

    newArr[j++] = arr[i];

  }

}

arr = newArr;

该代码首先使用一个新的数组newArr来存储不包含删除元素的数组元素。然后,使用一个循环遍历该数组,并判断每个元素是否等于要删除的元素。如果它们不相等,则将该元素添加到新的数组中。最后,将原始数组arr指向新的数组newArr。此方法具有良好的性能,但代码可能不够简单易读。

以上就是Java数组删除指定元素的三种方法。需要看情况使用,可以选择一种最适合的解决方案。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复