一、将一个元素插入到数组的指定位置
public static void main(String[] args) {
int array[] = {1, 2, 3, 4, 5, 7, 8};
insertArray(array, 5, 6);
}
public static void insertArray(int array[], int index, int target) {
//创建一个新的数组
int newArray[] = new int[array.length + 1];
for (int j = 0; j < newArray.length - 1; j++) {
if (j == index) {
newArray[j] = target;
for (int s = index; s < newArray.length - 1; s++) {
newArray[s + 1] = array[s];
}
//当插入完成功后跳出外循环,进入内循环操作
break;
} else {
newArray[j] = array[j];
}
}
for (int x = 0; x < newArray.length; x++) {
System.out.print(newArray[x] + " ");
}
}
二、移除数组指定元素
Java 数组的大小一旦创建好了就不能变动,所以要重新 new 一个数组,然后把删除之后的东西复制过去,以此达到删除元素的目的。
1️⃣转换为 list 移除
public static void main(String[] args) {
String[] str = {"张三", "李四", "王五"};
//将数组转换为list集合
List<String> list = Arrays.asList(str);
if (list.contains("张三")) {
list.remove("张三");
}
}
执行报错:
原因:
- Arrays.asList() 返回
java.util.Arrays$ArrayList
,而不是 ArrayList。 Arrays$ArrayList
和 ArrayList 都是继承 AbstractList,remove,add 等方法在 AbstractList 中是默认throw UnsupportedOperationException
而且不作任何操作。- ArrayList 重写这些方法来对 list 进行操作,但是
Arrays$ArrayList
没有重写 remove(),add() 等,所以throw UnsupportedOperationException
。
2️⃣转换为 Arraylist,再移除
public static void main(String[] args) {
String[] strs = {"张三", "李四", "王五"};
//将数组转换为list集合
List<String> list = Arrays.asList(strs);
if (list.contains("张三")) {
//转换为ArrayLsit调用相关的remove方法
List<String> arrayList = new ArrayList<>(list);
arrayList.remove("张三");
for (String str : arrayList) {
System.out.print(str + " ");
}
}
}
三、移除数组中的 null 元素
可以先将数组转为 list,移除 null 之后再转为数组。