Java数组的扩容与缩减

本文详细探讨了Java数组的扩容和缩减机制。从需求、思路分析到代码实现,逐一剖析了数组在扩展和收缩过程中的优化与潜在缺点。特别强调了在ArrayAdd操作中的注意事项,对理解Java数组操作具有指导意义。
摘要由CSDN通过智能技术生成

Java数组的扩容与缩减

Java数组的扩容

要求

        实现动态的给数组添加元素效果,实现对数组的扩容,
    
        1. 原始数组此次采取静态分配 byte[] arr = {1,2,3}
        2. 增加用户需要扩容的元素,直接放在数组的最后 arr = {1,2,3,,x}
        3. 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续 Y/N

思路分析

        先繁后简
    
        1. 定义初始化数组 byte[] arr = {1,2,3};   下标 0~2
        2. 定义一个新的数组 byte[] arrNew = new int[arr.length + i];
        3. 遍历 arr 数组,依次将 arr 的元素拷贝到 arrNew 数组中
        4. 将用户输入到的c扩容元素赋给 arrNew[arrNew.length-i] = 元素
        5. 让 arr 指向arrNew;arr = arrNew;那么,原来arr数组就被销毁
    
        先死后活
        
        1. 创建一个 Scanner 接收用户的输入
        2. 因为用户什么时候退出不确定,此次采取 do - while + break 来控制

优化

        可以采取随机产生原始数组和添加的方式,但不太建议,因为不太贴合生活所需

缺点

        1. 未使用函数的调用实现用户的继续操作
        2. 该代码效率低,未使用链表的方式,适合初学者
        3. 询问用户是否继续次操作,只能对 'N'字符做出准确的判断,对其他任何输入操作,
           没有进行判断,都为true,此为大bug,解决此bug的其中一个方法就是  使用函数的调用实现用户的继续操作
        4. 没有做出对任意位置的添加,在以后可以用链表做出此效果,且效率较高,代码简洁    

代码以及需要强调的部分


import java.util.Scanner;

public class ArrayAdd 
{
   
    public static void main(String[] args) 
    {
   
        byte[] arr = {
    1, 2, 3 };

        do 
        {
   
            Scanner myScanner = new Scanner(System.in);
            System.out.print("请输入需要添加的元素个数:");

            /*
                强调 强调 强调
                因为myScanner.nextByte()在后面多次遇到,所以必须这样做,防止出现重复输入的情况
             */

            byte len = myScanner.nextByte();

            byte[] arrNew = new byte[arr.length + len];

            // 遍历 arr 数组,依次将 arr 的元素拷贝到 arrNew 数组
            for (byte i = 0; i < arr.length; i++) 
            {
   
                arrNew[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值