Java数据结构-通过数组封装-结构分析

1、默认arrayList的数组未初始化

        ArrayList<Integer> arrayList = new ArrayList<>();System.out.println(ClassLayout.parseInstance(arrayList).toPrintable());
java.util.ArrayList object internals:
OFF  SZ                 TYPE DESCRIPTION               VALUE0   8                      (object header: mark)     0x0000000000000001 (non-biasable; age: 0)8   4                      (object header: class)    0x0000d7a012   4                  int AbstractList.modCount     016   4                  int ArrayList.size            020   4   java.lang.Object[] ArrayList.elementData     []
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

 2、第一次使用时会初始化:长度为10

        ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(1);System.out.println(ClassLayout.parseInstance(arrayList).toPrintable());
java.util.ArrayList object internals:
OFF  SZ                 TYPE DESCRIPTION               VALUE0   8                      (object header: mark)     0x0000000000000001 (non-biasable; age: 0)8   4                      (object header: class)    0x0000d7a012   4                  int AbstractList.modCount     116   4                  int ArrayList.size            120   4   java.lang.Object[] ArrayList.elementData     [1, null, null, null, null, null, null, null, null, null]
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

 3、第一次扩容:第11次添加数据时扩容,扩容到15

        ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(1);for (int i = 2; i <=10; i++) {arrayList.add(i);}arrayList.add(11);System.out.println(ClassLayout.parseInstance(arrayList).toPrintable());
java.util.ArrayList object internals:
OFF  SZ                 TYPE DESCRIPTION               VALUE0   8                      (object header: mark)     0x0000000000000001 (non-biasable; age: 0)8   4                      (object header: class)    0x0000d7a012   4                  int AbstractList.modCount     1116   4                  int ArrayList.size            1120   4   java.lang.Object[] ArrayList.elementData     [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, null, null, null, null]
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

4、 实现通用的数组:ArrayList

  • 初始化:内部使用数组保存数据
  • 方法:是否为空,是否已满,获取元素个数,新增数据,删除数据,修改数据,获取指定索引位置的数据,遍历打印:正序反序,扩容,缩容

 5、ArrayList集合的长度和容量不是同一个意思

  1. 长度(size)是指ArrayList中当前存储的元素数量。而容量(capacity)是指ArrayList内部数组可以容纳的元素数量。在ArrayList初始化时,它会创建一个内部数组,这个数组的初始大小是10。即使你还没有添加任何元素,这个数组仍然存在,所以ArrayList的初始长度是0,但初始容量是10。
  2. 当你向ArrayList添加元素时,如果当前长度小于容量,那么它不会重新分配数组。只有当长度超过了容量时,ArrayList才会考虑扩容,扩容后的容量通常是原容量的1.5倍加上10。
  3. 所以,长度和容量是两个不同的概念,但它们之间有一定的关联。
  4. ArrayList集合的length和capacity不是同一个意思。  
  5. length表示ArrayList集合中元素的个数,可以通过size()方法获取。  
  6. capacity表示ArrayList集合的容量,即当前ArrayList能够存储的元素个数的上限,可以通过capacity()方法获取。  
  7. 简单来说,length表示当前ArrayList中存储的元素个数,
  8. 而capacity表示ArrayList能够存储的元素个数的上限。当向ArrayList中添加元素时,如果超过了ArrayList的容量,ArrayList会自动扩展其容量,以容纳更多的元素。

 

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

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

相关文章

自动驾驶学习笔记(十八)——Lidar感知

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 Lidar感知 运动补偿 点云分割 总结…

spring面试:一、面试题分类总览+bean线程安全问题+AOP相关问题(定义、使用步骤、编程式事务管理和声明式事务管理和声明式事务管理失效)

面试题分类总览 bean线程安全问题 单例/多例 单例&#xff08;singleton&#xff09;&#xff1a;在每个spring ioc容器中都只有一个实例。 多例&#xff08;prototype&#xff09;&#xff1a;在每个spring ioc容器中有多个实例。 默认情况下spring中的bean都是单例的。但是…

高并发如何实现单用户信息查询接口

高并发如何实现单用户信息查询接口 故事情节 产品&#xff1a;小李&#xff0c;有个单用户信息查询的功能&#xff0c;需要你实现一下小李&#xff1a;这还不简单&#xff0c;两分钟我给你实现两分钟过去…小李&#xff1a;欧克了&#xff0c;部署上线了运维&#xff1a;哪个…

vue3路由跳转及传参

1.创建项目及路由 1.1 创建文件时记得勾选上vue-router&#xff0c;没有勾选也没有关系 // vue3安装命令 npm create vuelatest // 以下选项可根据自己所需&#xff0c;进行选择&#xff0c;不懂就翻译 ✔ Project name: … <your-project-name> ✔ Add TypeScript? …

数组和链表-内存存储分析

1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

tensorflow定制模型和训练算法

1.从自定义损失函数开始 这里先实现一个Lenet-5模型 input_data keras.layers.Input(shape (28,28,1)) conv_1 keras.layers.Conv2D(filters6, kernel_size(5,5), strides1, activationrelu, padding same)(input_data) pool_1 keras.layers.AveragePooling2D(pool_size…

动态规划——斐波那契数列模型:1137.第N个泰波那契数

文章目录 题目描述算法原理1.状态表示(最重要的&#xff09;什么是状态表示&#xff1f;状态表示怎么来的呢&#xff1f;本题的状态表示 2.状态转移方程(最难的&#xff09;本题的状态转移方程 3.初始化(后三步完成剩下百分之一的细节问题&#xff09;本题的初始化 4.填表顺序本…

第23节: Vue3 绑定 HTML 类

在UniApp中使用Vue3框架时&#xff0c;你可以使用类绑定语法来动态地添加或移除HTML元素的类。 下面是一个示例&#xff0c;演示了如何在UniApp中使用Vue3框架使用绑定HTML类&#xff1a; <template> <view> <button click"toggleClass">Toggl…

C语言实现快速傅立叶(FFT)(一)

1. FFT理论相关知识 FFT&#xff08;快速傅里叶变换&#xff09;其本质就是DFT&#xff0c;只不过可以快速的计算出DFT结果&#xff0c;所以首先应该理解DFT&#xff0c;DFT(Discrete Fourier Transform) 离散傅里叶变换的缩写&#xff0c;FFT(Fast Fourier Transform)快速傅里…

【算法与数据结构】376、LeetCode摆动序列

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题难点在于要考虑到不同序列的情况&#xff0c;具体来说要考虑一下几种特殊情况&#xff1a; 1、上…

4.qml 3D-Light、DirectionalLight、PointLight、SpotLight、AxisHelper类深入学习

今天我们学习灯光类 首先来学习Light类&#xff0c;它是所有灯光的虚基类&#xff0c;该类是无法创建的&#xff0c;主要是为子类提供很多公共属性。 常用属性如下所示&#xff1a; ambientColor : color&#xff0c;该属性定义在被该光照亮之前应用于材质的环境颜色。默认值…

oracle 锁表解决办法

相关表介绍 V$LOCKED_OBJECT&#xff08;记录锁信息的表&#xff09;v$session&#xff08;记录会话信息的表&#xff09;v$sql&#xff08;记录 sql 执行的表&#xff09;dba_objects&#xff08;用来管理对象&#xff0c;表、库等等&#xff09; 查询锁表的 SID select b.…

Cockpit upload文件上传漏洞(CVE-2023-1313)

0x01 产品简介 Cockpit 是一个自托管、灵活且用户友好的无头内容平台,用于创建自定义数字体验。 0x02 漏洞概述 Cockpit assetsmanager/upload接口处存在文件上传漏洞,攻击者可通过该漏洞在服务器端任意上传代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x0…

基于SpringBoot的语言课学习系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的语言课学习系统,java项…

Web开发伴侣 Prepros 7.17 Crack

您友好的 Web 开发伙伴&#xff0c;Prepros 编译您的文件、转译您的 JavaScript、重新加载您的浏览器并 使开发变得非常容易测试您的网站&#xff0c;以便您可以专注于制作 他们完美。 编译一切 Prepros 可以编译 Sass、Less、Stylus、Pug/Jade、Haml、Slim、CoffeeScript 和 …

linux中core调度器

背景 开始把core调度器当成了linux的主调度器&#xff0c;导致查找网上资料时总觉得对不上&#xff0c;最后从linux的rust文档中明白了&#xff0c;core调度器是为了解决超线程场景下缓存漏洞&#xff08;如mds、L1HF&#xff09;而存在的。简单来说就是一个cpu上同时运行两个…

翻译: 为什么需要微调大模型 Why Fine-tuning LLM

虽然RAG提供了一种方式来给大型语言模型提供额外的信息&#xff0c;但还有另一种叫做微调&#xff08;fine-tuning&#xff09;的技术&#xff0c;也是给它更多信息的一种方式。特别是&#xff0c;如果你有的上下文比大型语言模型的输入长度或上下文窗口长度更大&#xff0c;那…

如何使用ArcGIS Pro拼接影像

为了方便数据的存储和传输&#xff0c;我们在网上获取到的影像一般都是分块的&#xff0c;正式使用之前需要对这些影像进行拼接&#xff0c;这里为大家介绍一下ArcGIS Pro中拼接影像的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的…

ArcGIS Pro SDK文件选择对话框

文件保存对话框 // 获取默认数据库var gdbPath Project.Current.DefaultGeodatabasePath;//设置文件的保存路径SaveItemDialog saveLayerFileDialog new SaveItemDialog(){Title "Save Layer File",OverwritePrompt true,//获取或设置当同名文件已存在时是否出现…

PPT插件-好用的插件-PPT 素材该怎么积累-大珩助手

PPT 素材该怎么积累&#xff1f; 使用大珩助手中的素材库功能&#xff0c;将Word中的&#xff0c;或系统中的文本文件、图片、其他word文档、pdf&#xff0c;所有见到的好素材&#xff0c;一键收纳。 步骤&#xff1a;选中文件&#xff0c;按住鼠标左键拖到素材库界面中&…