gpt4 book ai didi

java - 在 Debug模式下,我可以看到额外的数组列表元素并初始化为零

转载 作者:行者123 更新时间:2023-11-30 06:50:53 24 4
gpt4 key购买 nike

我使用简单的 jdbc 调用从数据库中获取一些数据,当我调试我的应用程序时,它显示了一些为空的额外记录。

enter image description here

我的列表的实际大小应该是 138,但它初始化为 171 作为数组大小。

enter image description here

因为我使用名为 LDCBeanCollection 的集合,它扩展了 ArrayList 并实现了可序列化的 BaseDTO

公共(public)类 LDCBeanCollection 扩展 ArrayList 实现 BaseDTO

public interface BaseDTO extends Serializable

为什么会出现此问题。我错过了什么吗?

如何克服这个问题?

最佳答案

ArrayList 在内部管理通常大于当前大小的后备数组。由于 ArrayList 是一个可变长度列表,因此数组大小是在内部管理的,因此每次添加元素时不必重新分配数组大小。那将是非常昂贵的。当列表溢出时(您添加更多当前适合的元素),后备数组大小将比原始大小增加 1.5 倍以允许将来扩展。

换句话说,后备数组的末尾几乎总会有额外的未使用元素,并且它们每个条目仅消耗一个引用。

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/ArrayList.java#ArrayList.grow%28int%29

如果您担心额外的元素,请不要担心。该类管理事物,因此它们永远不会被视为列表的一部分。

关于java - 在 Debug模式下,我可以看到额外的数组列表元素并初始化为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com