從陣列中刪除元素
Java 沒有在 java.util.Arrays
中提供從陣列中刪除元素的直接方法。要執行它,你可以將原始陣列複製到新陣列,而不刪除元素或將陣列轉換為允許刪除的另一個結構。
使用 ArrayList
你可以將陣列轉換為 java.util.List
,刪除元素並將列表轉換回陣列,如下所示:
String[] array = new String[]{"foo", "bar", "baz"};
List<String> list = new ArrayList<>(Arrays.asList(array));
list.remove("foo");
// Creates a new array with the same size as the list and copies the list
// elements to it.
array = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(array)); //[bar, baz]
使用 System.arraycopy
System.arraycopy()
可用於製作原始陣列的副本並刪除所需的元素。下面是一個例子:
int[] array = new int[] { 1, 2, 3, 4 }; // Original array.
int[] result = new int[array.length - 1]; // Array which will contain the result.
int index = 1; // Remove the value "2".
// Copy the elements at the left of the index.
System.arraycopy(array, 0, result, 0, index);
// Copy the elements at the right of the index.
System.arraycopy(array, index + 1, result, index, array.length - index - 1);
System.out.println(Arrays.toString(result)); //[1, 3, 4]
使用 Apache Commons Lang
要輕鬆刪除元素,你可以使用 Apache 的百科全書郎庫,尤其是靜態方法 removeElement()
類的 ArrayUtils
。下面是一個例子:
int[] array = new int[]{1,2,3,4};
array = ArrayUtils.removeElement(array, 2); //remove first occurrence of 2
System.out.println(Arrays.toString(array)); //[1, 3, 4]