java Arralist 大小?
我们知道,当添加元素时,ArrayList 的大小会增加 50%(如果是 Vector,则为 100%)。我们在哪里可以找到此行为的实现?
谢谢
As we know ArrayList increases its size by 50% when elements are added(100% incase of Vector).Where can we find the implementation for this behavior?
Thx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在ArrayList中:
和矢量:
注意: 除非另有设置,
capacityIncrement
默认为0
,因此Vector
的默认行为是每次增加一倍支持数组需要扩展,但如果您设置了capacityIncrement,那么它将随之增加。此外,在所有情况下(对于 ArrayList 和 Vector),如果新容量仍然不够大,则无论增加的内容是什么,都会被取代,其中如果使用了所需的容量。
In
ArrayList
:and
Vector
:Note:
capacityIncrement
defaults to0
unless set otherwise so the default behaviour of aVector
is to double every time the backing array needs to be expanded but if you setcapacityIncrement
then it will be incremented by that instead.Also in all cases (for
ArrayList
andVector
) the increase--regardless of what it is--is superseded if the new capacity still isn't large enough, in which case the required capacity is used.在源代码中。您可以在 Sun JDK 安装的“src.zip”文件中找到 Sun Java 类库的源代码。 OpenJDK 6 和 OpenJDK 7 的源代码也可以通过 OpenJDK 项目页面下载。对于其他 Java 实现,请访问 Web 或查阅文档。
注意 - 并非所有 Java 类库都以相同的方式实现这些类。例如,查看 Apache Harmony 项目源代码或 GNU Classpath 项目源代码不会告诉您 Sun JDK 类库是如何工作的。
In the source code. You can find the source code for the Sun Java class libraries in the "src.zip" file in your Sun JDK installation. The sources for OpenJDK 6 and OpenJDK 7 are also available for download via the OpenJDK Project page. For other Java implementations, look on the web or consult the documentation.
Beware - not all Java class libraries implement these classes the same way. So for example, looking at the Apache Harmony project sources or the GNU Classpath project sources won't tell you how the Sun JDK class libraries work.
..在ArrayList#add的实现中! ?
下面是一个实现:
它调用
growAtEnd
并在该方法中我们找到代码片段:.. 其中增量设置为当前列表实际大小的 50%。
docjar 包含 Apache 开源 Java SE 6 平台 Apache Harmony 项目 的源代码。周围有很多不同的 Java 实现,并且只要此方法的接口中没有记录/要求,就不能保证每个实现都显示完全相同的行为(例如以 50% 的步长增加大小)。
.. in the implementation of ArrayList#add !?
Here's an implementation:
It calls
growAtEnd
and inside this method we find the snippet:.. where the increment is set to 50% of the actual size of the current list.
docjar contains the sourcecode of the Apache harmony project, Apaches open source Java SE 6 platform. There a lot of different Java implementations around and it is not guaranteed that each and every implementation shows the exact same behaviour (like increasing size in steps of 50%) as long as it is not documented/required in the interface to this method.