数组删除元素
1.利用新的数组
将原数组arr的元素,复制到新数组newArr中,复制过程中将要删除的元素,选择不复制
public class Test01{
public static void main(String [] args){
String [] arr= {"zhangsan","lisi","wangmazi","tangliang"};
//创建一个新的数组,长度设置为原数组-n,这里我们删除1个元素lisi ,所以长度设置为arr.length-1
String [] newArr = new String[arr.length-1];
int index = 0; //设置一个索引值
for(String name : arr){ //遍历arr数组
if(!name.equals("lisi")){ //只要不是我们要删除的元素,
newArr[index++] = name; //就复制给newArr的当前index ,然后index++
}
}
arr = newArr; //将newArr的地址传递给arr
//打印arr数组
for(String str : arr){
System.out.println(str);
}
}
}
输出:
缺点:数组作为容器,是存储数据的,这样的删除会让容器越变越小
2.利用数组元素往前移动
将要删除元素后面的元素全部往前移动,然后将最后以为赋值为null,这样数组的长度也不会变小
public class Test01{
public static void main(String [] args){
String [] arr= {"zhangsan","lisi","wangmazi","tangliang"};
//遍历数组
int num = 0 ;
for(int i =0 ;i<arr.length;i++){
if (arr[i].equals("lisi")){
num = i; //获取要删除元素的下标
}
}
//从要删除元素小表开始,后面的元素全部往前移动
for(int i = num ; i<arr.length-1;i++){ //注意这里只遍历到倒数第二个元素,因为倒数第二个将倒数第一个往前移动后,倒数第一个找不到下一个元素
arr[i] = arr[i+1];
}
arr[arr.length-1] = null; //将数组最后一个元素设置为null
for(String name : arr){
System.out.print(name+"\t");
}
}
}
输出: