Java之数组扩容

简介: Java之数组扩容

数组添加/扩容

  • 要求:实现动态的给数组添加元素效果,实现对数组扩容。ArrayAdd.java

1) 原始数组使用静态分配 int[] arr = {1,2,3}
2) 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}
ArrayAdd02.java

  • 思路分析

    1. 定义初始数组 int[] arr = {1,2,3}//下标0-2
    2. 定义一个新的数组 int[] arrNew = new int[arr.length+1];
    3. 遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
    4. 将 4 赋给 arrNew[arrNew.length - 1] = 4;4赋给arrNew最后一个元素
    5. arr 指向 arrNew ; arr = arrNew; 那么 原来arr数组就被销毁
  • 代码实现:
      int[] arr = {1,2,3};
      int[] arrNew = new int[arr.length + 1];
      //遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
      for(int i = 0; i < arr.length; i++) {
          arrNew[i] = arr[i];
      }
      //把4赋给arrNew最后一个元素
      arrNew[arrNew.length - 1] = 4;
      //让 arr 指向 arrNew,
      arr = arrNew;
      //输出arr 看看效果
      System.out.println("====arr扩容后元素情况====");
      for(int i = 0; i < arr.length; i++) {
          System.out.print(arr[i] + "\t");
      }

在这里插入图片描述
在这里插入图片描述

3) 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n

  1. 创建一个 Scanner可以接受用户输入
  2. 因为用户什么时候退出,不确定,使用 do-while + break来控制

代码实现:

    Scanner myScanner = new Scanner(System.in);
    //初始化数组
    int[] arr = {1,2,3};
    
    do {
        int[] arrNew = new int[arr.length + 1];
        //遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
        for(int i = 0; i < arr.length; i++) {
            arrNew[i] = arr[i];
        }
        System.out.println("请输入你要添加的元素");
        int addNum = myScanner.nextInt();
        //把addNum赋给arrNew最后一个元素
        arrNew[arrNew.length - 1] = addNum;
        //让 arr 指向 arrNew, 
        arr = arrNew;
        //输出arr 看看效果
        System.out.println("====arr扩容后元素情况====");
        for(int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        //问用户是否继续
        System.out.println("是否继续添加 y/n");
        char key = myScanner.next().charAt(0);
        if( key == 'n') { //如果输入n ,就结束
            break;
        }            
    }while(true);
    
    System.out.println("你退出了添加...");

在这里插入图片描述

目录
相关文章
|
2月前
|
Java 索引 容器
Java ArrayList扩容的原理
Java 的 `ArrayList` 是基于数组实现的动态集合。初始时,`ArrayList` 底层创建一个空数组 `elementData`,并设置 `size` 为 0。当首次添加元素时,会调用 `grow` 方法将数组扩容至默认容量 10。之后每次添加元素时,如果当前数组已满,则会再次调用 `grow` 方法进行扩容。扩容规则为:首次扩容至 10,后续扩容至原数组长度的 1.5 倍或根据实际需求扩容。例如,当需要一次性添加 100 个元素时,会直接扩容至 110 而不是 15。
Java ArrayList扩容的原理
|
3月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
41 4
|
3月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
50 2
|
3月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
110 2
|
3月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
62 9
|
3月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
31 3
|
3月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
35 6
|
3月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
39 1
|
3月前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
25 1
|
3月前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
154 9