java动态数组扩容

Java中初始化一个数组需要定义数组的容量,而在我们使用数组时往往会遇到数组容量不够的情况,此时我们就需要通过动态扩容的方式来来根据需求扩大数组的容量。
   我们可以通过两种方法来实现数组的动态扩容,一种是通过创建一个新的数组来覆盖旧数组,从而实现扩大数组容量的目的;另一种则是是通过java.util.Arrays类库来实现动态扩容。接下里我们分别对这两种方法进行分析:

一.新的数组来覆盖旧数组:

通过定义一个容量更大的数组存放原数组,然后让原数组名称重新等于大数组。

基本操作格式(如果输出结果为4则扩容成功)

   public static void main(String[] args) {                                 
         int[] arr = {1,3,5};  //定义一个容量为3的数组arr                             
         int[] arr2 =new int[arr.length+1]; //定义一个新数组arr2,容量比arr大1          
           for(int i=0;i<arr.length;i++){//通过循环给新数组赋值                       
               arr2[i]=arr[i];                                              
           }                                                                
         arr = arr2;//新数组覆盖旧数组                                              
         System.out.println(arr.length);//打印结果为4,数组扩容成功                     
   }                                                                        

 现定义一个容量为1的数组,将系统输入的内容添加到数组中,并每添加一次对数组进行一次扩容到存下六个元素,代码如下:

   public static void main(String[] args) {                              
       Scanner input = new Scanner(System.in);                           
       int[] arr = new int[1];  //定义一个容量为1的数组arr                         
       int i =0;                                                         
       while(i<5) { //通过死循环来观察多次动态扩容的结果                                 
           int x = input.nextInt();//接收int类型的输入                          
           arr[i] = x;//将输入传递给数组arr                                      
           System.out.println(arr[i]);                                   
           int[] arr2 = new int[arr.length + 1]; //定义一个新数组arr2,容量比arr大1  
           //通过循环对新数组赋值                                                  
           for(int j=0;j<arr.length;j++){                                
               arr2[j] = arr[j];                                         
           }                                                             
           arr = arr2;//新数组覆盖旧数组                                         
           i++;                                                          
           System.out.println(Arrays.toString(arr));//打印数组内的值            
       }                                                                 
   }                                                                     

二.利用Java.util.Arrays类库:

public class ArrayTest { 
       public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] arr = {1, 3, 4};  //定义一个容量为3的数组arr
        System.out.println("原数组为:");
        System.out.println(Arrays.toString(arr));
        arr = Arrays.copyOf(arr, 7);//将数组arr扩容到7
        //给多增加的四个元素赋值的数组下标6定义一个值
        System.out.println("请给多增加的四个元素赋值:");
        for (int i = 3;i<7;i++)
        {
            int x = input.nextInt();
            arr[i] = x;
        }
        System.out.println("现在的1数组为:");
        System.out.println(Arrays.toString(arr));//打印新数组
    }
}

 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值