我使用简单的jdbc调用从数据库中获取一些数据,当我调试我的应用程序时,它显示一些空值的额外记录。
我的列表的实际大小应为138,但其初始化为数组大小。
因为我正在使用名为LDCBeanCollection的集合,它扩展了ArrayList并实现了可序列化的BaseDTO
public class LDCBeanCollection extends ArrayList implements BaseDTO
public interface BaseDTO extends Serializable
为什么会出现此问题。我错过了什么吗?
我如何克服这个问题?
答案 0 :(得分:4)
ArrayList
内部管理通常大于当前大小的后备阵列。由于ArrayList
是一个可变长度列表,因此数组大小在内部进行管理,因此每次添加元素时都不必重新分配。那将是非常昂贵的。当列表溢出时(您添加了当前适合的更多元素),后备阵列大小为incremented by 1.5 times than original size
以允许将来扩展。
换句话说,在后备数组的末尾几乎总会有额外的未使用元素,并且每个条目只消耗一个引用。
如果您担心额外的元素,请不要。该类管理事物,因此它们从未被视为列表的一部分。