数组删除元素

数组删除元素

1.利用新的数组

将原数组arr的元素,复制到新数组newArr中,复制过程中将要删除的元素,选择不复制

java 复制代码
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,这样数组的长度也不会变小

java 复制代码
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");
        }
    }
}

输出:

相关推荐
凤凰院凶涛QAQ5 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
H.莓飛5 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1146 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶7 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
w_zero_one7 小时前
算法--模拟
java·数据结构·算法
小灰灰搞电子7 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放7 小时前
面向对象高级(实战案例)
开发语言·python·学习
Javatutouhouduan7 小时前
阿里1658页Java面试题总结(含答案)
java·高并发·java面试·java面试题·后端开发·java程序员·java八股文
秋天的怀念_David7 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
专业程序开发源8 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计