数组的扩容与缩容

数组的扩容与缩容

文章目录

  • 数组的扩容与缩容
    • 数组的扩容
      • 内存分析
    • 数组的缩容
      • 内存分析
      • 内存分析

数组的扩容

数组扩容是指当原有数组的空间不足以容纳更多的元素时,创建一个新的、长度更大的数组,并将原数组中的元素复制到新数组中,然后更新原数组变量以指向新的数组。

步骤:

  1. 手动创建新数组并复制数据。首先创建一个新的数组,其长度大于或等于原数组长度的两倍(或其他合适的增长因子)
  2. 使用循环将原数组的元素复制到新数组中,最后将原数组的引用指向新数组。

代码实现:

public class Test06{public static void main(String[] args){//原数组String[] arr = {"胡歌","彭于晏","陈冠希"};//计算新容量int oldCapacity = arr.length;//3int newCapacity = oldCapacity + (oldCapacity>>1);//4//新数组String[] newArr = new String[newCapacity];//将原数组下标的元素赋值给新数组for(int i = 0;i<arr.length;i++){newArr[i] = arr[i];}//将新数组的地址赋值给原数组arr = newArr;//遍历原数组for(String element : arr){System.out.println(element);}}
}

运行结果:

在这里插入图片描述

内存分析

在这里插入图片描述

数组的缩容

就是创建一个新的数组,新数组的长度比原来的数组小,然后将原来数组中的内容全部拷贝到新的数组中,最后将新数组重新赋给原来的数组,将新的数组空间进行释放。

代码实现1:

public class Test07{public static void main(String[] args){//原数组String[] arr = {"胡歌","谢霆锋","刘德华","吴彦祖"};//新数组String[] newArr = new String[arr.length-1];//3 - [null,null,null]//将除了"谢霆锋"的元素赋值给新数组 -- ["胡歌","刘德华","吴彦祖"]int index = 0;for(String element : arr){if(!element.equals("谢霆锋")){newArr[index++] = element;}}//将新数组的地址赋值给原数组arr = newArr;//遍历原数组for(String element : arr){System.out.println(element);}	}
}

运行结果:

在这里插入图片描述

内存分析

在这里插入图片描述

代码实现2:

public class Test08{public static void main(String[] args){//原数组String[] arr = {"胡歌","谢霆锋","刘德华","吴彦祖"};//将删除元素后一位的数据全部都往前移 -- "胡歌","刘德华","吴彦祖","吴彦祖"for(int i = 1;i<arr.length-1;i++){arr[i] = arr[i+1];}//将最后一位数据赋值为nullarr[arr.length-1] = null;//遍历原数组for(String element : arr){System.out.println(element);}	}
}

内存分析

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 24.04 向日葵桌面版安装

向日葵桌面版 ubuntu24.04向日葵无法安装&#xff0c;缺少依赖。向日葵缺少依赖&#xff0c;“有未能满足的依赖关系”。解决方案。 1. 下载本体 mkdir oraysun && cd oraysun wget https://d.oray.com/sunlogin/linux/SunloginClient_15.2.0.63062_amd64.deb2. 下载…

iOS 创建开源库时如何使用图片和xib资源

参考文章 参考文章 使用xib的正确姿势 #define MAIN_BUNDLE [NSBundle bundleForClass:[self class]] //获取bundle [[MAIN_BUNDLE loadNibNamed:itemResuableStr owner:self options:nil] lastObject]; //加载xib [tempCollectionView registerNib:[UINib nibWithNibName…

Word文件后缀

Word文件后缀 .docx文件为Microsoft Word文档后缀名&#xff0c;基于XML文件格式 .dotm为Word启用了宏的模板 .dotx为Word模板 .doc为Word97-2003文档&#xff0c;二进制文件格式 参考链接 Word、Excel 和 PowerPoint 的文件格式参考 Learn Microsoft

类和对象【四】运算符重载

文章目录 运算符重载的概念运算符重载&#xff08;函数&#xff09;返回值类型&#xff1a;任意类型函数名&#xff1a;operator已有操作符 运算符重载&#xff08;函数&#xff09;的特点和注意点3个比较特殊的运算符重载赋值运算符&#xff08;&#xff09;重载返回值类型和返…

嵌入式开发四:STM32 基础知识入门

为方便更好的学习STM32单片机&#xff0c;本篇博客主要总结STM32的入门基础知识&#xff0c;重点在于理解寄存器以及存储器映射和寄存器映射&#xff0c;深刻体会STM32是如何组织和管理庞大的寄存器&#xff0c;从而提高开发效率的&#xff0c;为后面的基于标准库的开发做好铺垫…

基于SSM框架的个人博客系统设计与实现:技术总结

引言 在数字化时代&#xff0c;个人博客系统已成为展示个人技术见解、分享生活点滴的重要平台。本次博客介绍了一个基于Java的个人博客系统的设计与实现&#xff0c;采用了流行的SSM&#xff08;Spring、SpringMVC、MyBatis&#xff09;技术栈&#xff0c;以及MySQL数据库和JS…

宝兰德数据可视化软件顺应AI趋势,释放数据价值的无限可能

随着数字技术的持续创新和普及&#xff0c;社会治理方式、产业形态、生活方式高度数字化&#xff0c;由此催生海量数据&#xff0c; 这些数据不仅种类繁多&#xff0c;且具有很高的价值。当企业决策者认识到这些数量庞大、晦涩难懂的数据背后蕴含着巨大的商业价值时&#xff0c…

MySQL 8.4 版本(LTS) 发布,一睹为快

前言 Oracle 前几天发布了 MySQL 8.4 版本(LTS)&#xff0c; 该版本是创新版的第一个长期支持版本。详细规划&#xff0c;请移步 技术译文 | 一文了解 MySQL 全新版本模型 关于 MySQL 的版本发布规划 Oracle MySQL 官方开发团队推出的新版本将过渡到新的 MySQL 版本模型。MyS…

cefsharp实现资源替换如网页背景、移除替换标签、html标识、执行javascript脚本学习笔记(含源码说明)

(一)实现测试(仅供学习参考) 1.1 目标系统页面(登录页)和登录后首页面中2处(一个替换一个移除) 1.2 实现后效果(使用cefsharp自定义浏览器实现以上功能) 1.3 登录后页面替换和移除 系统名称和一个功能菜单li (二)通过分析代码实现脚本编写 2.1 分开处理,设置了…

IDEA 2022.1版本开始,可以直接运行Markdown里的命令行

参照这种格式&#xff1a; shell mvn clean install注意idea支持的版本&#xff1a;是从 2022.1版本开始的。 ps&#xff1a;之前有人写过了&#xff0c;感觉很实用但是蛮多开发者不一定会知道的功能。 参考资料&#xff1a; https://www.cnblogs.com/didispace/p/16144107.h…

pygame鼠标绘制

pygame鼠标绘制 Pygame鼠标绘制效果代码 Pygame Pygame是一个开源的Python库&#xff0c;专为电子游戏开发而设计。它建立在SDL&#xff08;Simple DirectMedia Layer&#xff09;的基础上&#xff0c;允许开发者使用Python这种高级语言来实时开发电子游戏&#xff0c;而无需被…

LeetCode刷题笔记第168题:Excel表列名称

LeetCode刷题笔记第168题&#xff1a;Excel表列名称 题目&#xff1a; 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 想法&#xff1a; 类似十…

Spring Boot可以同时处理多少请求?

Spring Boot本身对并发请求的处理能力没有明确的限制。Spring Boot的并发处理能力通常受到以下因素影响&#xff1a; 服务器硬件&#xff1a;包括CPU核心数、内存大小等。JVM配置&#xff1a;堆内存、永久代或元空间大小等。Web服务器&#xff1a;Spring Boot 默认使用嵌入式的…

ES数据存储与查询基本原理

Elasticsearch&#xff08;ES&#xff09;简介 Elasticsearch&#xff08;ES&#xff09;是一个分布式、可扩展、近实时的搜索和分析引擎&#xff0c;它基于Lucene&#xff0c;设计用于云计算中&#xff0c;处理大规模文档检索和数据分析任务&#xff0c;常用于实现内部搜索引…

CMake:静态库链接其他动态库或静态库(九)

1、项目结构 对于下面这样一个项目 把calc模块做成静态或者动态库把sort模块做成静态库然后再sort模块中的*.cpp调用calc模块生成的库即可&#xff08;这样就制作了一个静态库引用动态或者静态库&#xff09;test模块用于测试sort模块中的内容 . ├── calc │ ├── ad…

Codeforces Round 943 (Div. 3) 题解 缺F和G2

A题&#xff1a; Maximize? 题目大意&#xff1a; 给你一个整数 x&#xff0c; 要求你找出任意一个 y &#xff0c;。使得最大。 思路一&#xff1a;暴力 数据范围小&#xff0c;直接暴力。 #include <bits/stdc.h> #define int long long #define endl \n using n…

MySQL —— 库的基本操作

一、数据库的增删查改 &#xff08;1&#xff09;创建 语句&#xff1a;create database db_name;&#xff08;db_name是自定义的数据库名字&#xff09; &#xff08;2&#xff09;删除 语句&#xff1a;drop database dp_name;&#xff08;dp_name是要被删除的数据库的名字…

【智能算法】冠豪猪优化算法(CPO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;M Abdel-Basset等人受到冠豪猪防御行为启发&#xff0c;提出了冠豪猪优化算法&#xff08;Crested Porcupine Optimizer, CPO&#xff09;。 2.算法原理 2.1算法思想 …

关于阿里云DataWorks的20道面试题

1. 请简要介绍阿里云DataWorks的基本概念和主要功能。 阿里云DataWorks是一个全链路的大数据开发治理平台&#xff0c;其主要功能包括数据集成、数据建模与开发、数据地图、数据质量和数据服务等。 DataWorks的基本概念围绕其作为一个大数据开发和治理的平台&#xff0c;它整…

【Cpp】类和对象#构造函数 析构函数

标题&#xff1a;【Cpp】类和对象#构造函数 析构函数 水墨不写bug &#xff08;图片来源于网络&#xff09; 正文开始&#xff1a; &#xff08;一&#xff09;构造函数 构造函数是特殊的成员函数&#xff0c;需要注意的是&#xff0c;构造函数虽然名称叫构造&#xff0c;但…