2016 - 2024

感恩一路有你

数组扩容的两种方式 变长数组是什么?

浏览量:1908 时间:2021-03-17 12:05:32 作者:admin

变长数组是什么?

为什么HashMap的数组长度一定是2的次幂?

]有两个原因

1。为了查找和添加元素,模块操作用于查找数组的下标。如果模运算是2的n次方,则可以用位运算符代替,效率高。

2. 扩容方便。

如果直接查看源代码,可以看到扩展的resize方法的参数是2*表.长度(图中是JDK7的源代码),也就是说每次扩容都是容量的两倍,扩容后需要进行数据迁移。如果初始长度为2的n次方,则扩展将减少数据迁移的次数。

例如,初始长度为16,将扩展到32。位置1中的节点仅在扩展后迁移到位置1和17。实际上,I位置的节点只会迁移到I之前和I扩展之后的数组长度。

例如,当数组的长度为16时,它位于1的位置。当它扩展到32时,它会被移到17的位置

例如,当数组的长度为16时,它就在1的位置。当它扩展到32时,它仍然处于1的位置。

这是主要原因。

顺便说一下,在源代码中,如果您不将其设置为2的n次方,它也将帮助您将其设置为2的n次方。例如,如果通过15,它将帮助您将其设置为16。源代码的对应方法是2的整数倍。

希望对您有所帮助。你可以关注我,分享一些关于源代码思想的知识

Java中数组的长度是不能改变的。Java中数组的定义是一组相同类型、固定长度的数据。一旦初始化,长度就不能更改。如果要使用的数组长度不确定,有两种解决方案:第一种是在初始化数组时申请足够大的长度,这样会造成内存空间的浪费,一般不建议这样做。第二种方法是以Java提供的set方式存储数据,如list、set和map对象。一方面,这些类型的对象的长度是动态增长的。另一方面,这些类提供了许多方法来轻松地操作数据。因此,当要存储的数据量不确定时,第二种方法优于第一种方法。

数组可以改变长度吗?

一定要先声明数组的长度,否则系统不会为其分配内存空间。Java中的数组是固定长度的。例如,int[]a={}定义的数组a的长度是0,这是固定长度。以后不允许给它赋值,因为它的长度在定义后不能更改。使用表时,数组的长度不能超过限制。

数组扩容的两种方式 数组如何扩容 数组的扩容有几种方式

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。