首页 > 编程语言 >java数组的扩容与缩容

java数组的扩容与缩容

时间:2024-07-13 22:29:04浏览次数:17  
标签:缩容 arr java int newArr length 数组

一、java扩容缩容的说明

        我们前面学过,创建java数组会在内存中开辟一块连续的空间,该空间固定不允许扩大和缩小。那么一个java数组要怎么实现扩容和缩容操作呢?

        也许你会想到。再创建一个大容量的数组,将旧数组中的元素拷贝到新数组中,最后将新数组的地址值赋给旧数组的变量即可。

        猜的很对。其实java数组的扩容在JDK中有已经实现的方法,也是使用的这种思想。缩容其实也一样,想必你已经有自己的想法了吧。

二、java数组的扩容

案例说明

案例1:数组的扩容:

现有数组 int[] arr = new int[]{1,2,3,4,5};
现将数组长度扩容1倍,并将10,20,30三个数据添加到arr数组中,如何操作?

代码实现

public class ArrayExer01_1 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5};

        //扩容1倍容量
//        int[] newArr = new int[arr.length * 2];
        //或
        int[] newArr = new int[arr.length << 1];

        //将原有数组中的元素复制到新的数组中
        for (int i = 0; i < arr.length; i++) {

            newArr[i] = arr[i];
        }

        //将10,20,30三个数据添加到新数组中
        newArr[arr.length] = 10;
        newArr[arr.length + 1] = 20;
        newArr[arr.length + 2] = 30;

        //将新的数组的地址赋值给原有的数组变量
        arr = newArr;

        //遍历arr
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
    }
}

三、java数组的缩容

案例说明

案例:数组的缩容:

现有数组 int[] arr={1,2,3,4,5,6,7}。现需删除数组中索引为4的元素。

代码实现

public class ArrayExer01_2 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7};

        int deleteIndex = 4;

        //方式1:不新建数组
//        for(int i = deleteIndex;i < arr.length - 1;i++){
//            arr[i] = arr[i + 1];
//        }
//
//        //修改最后元素,设置为默认值
//        arr[arr.length - 1] = 0;


        //方式2:新建数组,新的数组的长度比原有数组的长度少1个
        int[] newArr = new int[arr.length - 1];
        for (int i = 0; i < deleteIndex; i++) {
            newArr[i] = arr[i];
        }

        for(int i = deleteIndex;i < arr.length - 1;i++){
            newArr[i] = arr[i + 1];
        }

        arr = newArr;

        //遍历arr数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }

    }
}

标签:缩容,arr,java,int,newArr,length,数组
From: https://blog.csdn.net/weixin_44554794/article/details/140335094

相关文章

  • java数组之冒泡排序、快速排序
    一、排序算法概述1.算法定义排序:假设含有n个记录的序列为{R1,R2,...,Rn},其相应的关键字序列为{K1,K2,...,Kn}。将这些记录重新排序为{Ri1,Ri2,...,Rin},使得相应的关键字值满足条Ki1<=Ki2<=...<=Kin,这样的一种操作称为排序。通常来说,排序的目的是快速查找。2.衡量排序算......
  • 使用Java开发一个简易健康计算器
            开发一个简单的健康计算器应用程序,它可以接收用户的输入(如年龄、性别、身高、体重),并计算出用户的BMI(身体质量指数)和基础代谢率(BMR)。    一、BMI(BodyMassIndex,身体质量指数)是用来评估体重是否适宜的一个常用指标。它通过体重(以千克为单位)除以身......
  • IO输入输出流例子:Java对象输出json文本:
    读取文件:原始字节输入流(低级):publicclassCharCacheIOReader{publicstaticvoidmain(String[]args){try(//原始字节输入流(低级)Readerfr=newFileReader("src\\OutputStream.txt");//创建一个字......
  • 每周JAVA学习汇总
    本周我自学了Java的输入与输出包括了:使用Scanner类进行输入导入Scanner类:importjava.util.Scanner;创建Scanner对象:Scannerscanner=newScanner(System.in);读取不同类型的数据:读取字符串:StringinputString=scanner.nextLine();读取整数:intinputInt=scanner.ne......
  • 自学Java第二周
    本周学习一、Java能干些什么?1.共三个版本:JavaSE、JavaEE、JavaMEJavaSE:Java语言的(标准版),用于桌面应用开发,是其他两个版本的基础。JavaME:Java语言的(小型版),用于嵌入式电子设备或者小型移动设备。JavaEE:Java语言的(企业版),用于Web方向的网站开发(浏览器和服务器)。在这......
  • Java学习第二周
    标识符是用来给变量,类,方法以及包进行命名的。标识符的命名规则1.必须以字母、下划线“”、美元符“$”开头。2.其他部分可以是字母、下划线“”、美元符“$”和数字的人员组合·。3.大小写敏感,且长度无限制。4.不可以是Java的关键字。标识符使用规范表示类名的标识符:每个单......
  • java 基本语法1
    1.安装idea,java编译器,编译器会自动对代码进行编译,然后运行得到结果.idea分为社区版(免费),企业版(收费),https://www.jetbrains.com/zh-cn/idea/download/?section=windows从官网下载对应版本安装即可.2.java的数据类型有四类八项.整数,小数,字符,布尔.其中整数:intlongbyt......
  • java1
    1.安装一个Java开发环境,我安装的是JDK(从b站上学习的安装教程以及如何配置环境变量等等);同时我也对此进行了初步的了解JDK即Java开发工具包。它是用于构建在Java平台上发布的应用程序、Applet和组件的开发环境。JDK包含了Java编译器、Java文档生成工具、Java打包工具等,是整个Java......
  • [Java IO] 流原理及流的分类
    JavaIO流概念JavaIO(输入/输出)流是Java用于处理输入和输出操作的一种方式。JavaIO系统主要基于流(Stream)的概念,流是一组有序的数据序列,可以是输入流(从数据源读取数据)或输出流(向数据目标写入数据)。JavaIO流分类按操作数据单位不同分为:字节流(8bit)如二进制文件;字符流......
  • 从零学习的JAVAday8~day14
    在安装eclipse时我们直接打开eclipse官网我们点击下载并安装到合适的位置即可。打开eclipse后我们就可以创建Java文件了然后再创建一个Java类,这样我们就可以在里面写我们第一个java代码了这就是我们的第一个代码,意思为输出“helloworld”。我们可以看到运行代码后输出了“he......