小谈arraylistlist与数组(代码片段)

magic-garden magic-garden     2022-12-03     308

关键词:

1、数组在初始化的时候要指定数组的大小,ArrayList本质也是数组,不过是一个动态的数组,大小是可以变化的

  数组的大小:length;

  ArrayList的大小:size。

2、数组很好理解,ArrayList是动态数组,究竟是怎么回事?我研究了一下

技术图片
1 List<Integer> list = new ArrayList<>();
2 for(int i = 0;i< 37;i++) 
3   list.add(i);
4 
View Code

 

  对这段代码进行断点调试,然后观察List的变化:

  list 刚初始化的时候,list本质是Object[0]

  技术图片

  i ∈[0,9],list本质是Object[10],从list.add(0)的时候list由原本的Object[0]→Object[10],

  (注意看Object[0] id=34,而Object[10] id=39)

  技术图片

  一直到第十次for循环,我们看到size在一次增加,而Object数组的length一直是10,没变。

  (直到此时Object[10]  id=39,没有变化)

  技术图片

  下面变化来了!当进入第11次循环体的时候,神奇的是Object数组的length变成了15!!!

  (同时Object[15] id=62,变化了)

  技术图片

  技术图片

  (直到第15次循环,Object[15] id=62  没变化,下面依次在Obiect[22]、Object[33]、Object[49]的时候id变化了)

  技术图片技术图片技术图片

  

  由上图的变化,可以看出ArrayList就是动态的数组,每当list真实的size达到Object的length的时候,又出来一个扩容、全新的Object数组(暂时不知,每一次扩容大小是什么规则),但至少满足用户需求。就这一点相较常规的数组来说,ArrayList更加灵活。

  处女篇,欢迎指正~

 

从修改文件的创建时间小谈软件开发人员与非软件开发人员的区别(代码片段)

 *可能大部分人都认为,创建一个文件之后,创建时间是不可改的,就像在学校的时候老师检查电子文档作业一样,本来要求一个星期完成一个报告,最后老师发现交上来的文档创建时间就在一天前,那老... 查看详情

小谈闭包(代码片段)

猥琐男:闭包?死肥宅:一个函数return一个函数,且引用这个函数的变量?闷骚男:其实闭包就是内部函数,我们可以通过在一个函数内部或者块里面定义一个函数(引用函数内部的变量)来创建闭包;死肥宅:搜嘎;猥琐男:... 查看详情

java多态性:为什么使用“listlist=newarraylist”而不是“arraylistlist=newarraylist”?[重复](代码片段)

查看详情

数组arraylistlist的区别

  数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List<T>的容量可根据需要自动扩充、修改、删除或插入数据。   数组可以具有多个维度,而ArrayList或List<T>始终只具有一个维度... 查看详情

小谈网关项目中的设计模式(代码片段)

基于个人的经验,谈谈设计模式在网关中的应用。因为是经验之谈,没有绝对的对与错。下面整理的是我最常使用的设计模式,我用设计模式的前提是让代码的可读性变强能支持日后功能扩展单例目的保证全局只有一个实例,防... 查看详情

015_集合框架(代码片段)

...n的子接口,有三个实现类ArrayList:主要实现类。语法结构:ArrayListlist=newArrayList();特点 查看详情

小谈keepalivedvip漂移原理与vrrp协议

参考技术Ahttps://www.cnblogs.com/lixuwu/p/8476997.html什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术手段,主要用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生。之所以说keepalived... 查看详情

数组与指针(代码片段)

数组与指针适用场合指针 -> 地址 -> 一对一数组 -> 地址集合 -> 一对多 inta=1; //字面变量 //大写表示数组小写表示指针 /****************************/ int*c; //一级指针 intC[1]; //一级数组 /****************************/ intCC[1][1]; //二... 查看详情

docker个人理解与极简安装(代码片段)

1.小谈docker以下皆为楼主个人理解,如有错误请指出。1.docker是什么docker是一种容器化引擎,可以简单的理解是当使用时,docker为我们建立了一个虚拟机,将我们需要安装的软件安装在了这个虚拟机上。但是docker相... 查看详情

docker个人理解与极简安装(代码片段)

1.小谈docker以下皆为楼主个人理解,如有错误请指出。1.docker是什么docker是一种容器化引擎,可以简单的理解是当使用时,docker为我们建立了一个虚拟机,将我们需要安装的软件安装在了这个虚拟机上。但是docker相... 查看详情

matlab数组与矩阵(代码片段)

××××××××××××××××××××××××××数组与矩阵××××××××××××××××××××××××××得到关于数组与矩阵的信息:isempty():为空,即为[]isscalar():为标量,即为单一的一个数字isvector():为向量,即为数组或者矩阵isrow():为行向量... 查看详情

指针与数组(代码片段)

二级指针、指针数组、数组指针指针和数组的关系二级指针指针数组与数组指针指针数组的定义数组指针的定义举例指针和数组的关系通过上一篇文章指针的原理——地址、内存我们知道,数组名表示的其实是数组首元素的... 查看详情

json邮差json与数组(代码片段)

查看详情

c++指针与数组(代码片段)

C++指针与数组的关系。如何传递数组参数。如何返回数组参数。前言C,C++的指针和数组的联系非常紧密。数组的真正面目是什么?如何传递一个数组到函数中?为什么可以这么访问数组?函数如何返回多个返回值?这些问题老生... 查看详情

shell❀函数与数组(代码片段)

文章目录六、函数与数组1、函数1.1函数定义1.2函数的优势1.3函数语法1.4函数调用1.5操作案例1.6函数库文件1.7递归函数2、数组2.1数组定义2.2定义股关联数组2.3数组的赋值2.4数组操作2.5数组操作案例六、函数与数组1、函数主要介绍... 查看详情

shell❀函数与数组(代码片段)

文章目录六、函数与数组1、函数1.1函数定义1.2函数的优势1.3函数语法1.4函数调用1.5操作案例1.6函数库文件1.7递归函数2、数组2.1数组定义2.2定义股关联数组2.3数组的赋值2.4数组操作2.5数组操作案例六、函数与数组1、函数主要介绍... 查看详情

真数组与伪数组(代码片段)

js有真数组与伪数组java只有真数组,这是其健壮性的表现 什么是伪数组定义:1、伪数组是一个对象2、这个对象必须要有length属性3、如果这个对象的length不为0,那么必须要有按照下标存储的数据js实现:vara=‘0‘:1,‘1‘:2,... 查看详情

csharp结构与字节数组的转换(代码片段)

查看详情