1

在java中,如果我们在数组和数组列表中存储4个元素,在内存中的低级别是否相同,或者为了存储元素有什么不同?

4

3 回答 3

2

它会有所不同。ArrayList 是数组的包装器,带有几个其他辅助函数。ArrayList 的内存占用会稍大一些,并且会根据需要自行调整大小。

于 2012-07-25T16:49:04.860 回答
2

它不同,ArrayList 内部管理自己的存储阵列,也有自己的属性

于 2012-07-25T16:49:38.900 回答
1

数组与列表完全不同,即使列表恰好是 ArrayList 并且内部也仅使用数组。

对于数组,只存在数组(在本次讨论中,我将忽略元素将占用的内存)。因此,堆中有一个对象,即数组本身。

对于 ArrayList,存在 ArrayList 实例,并且该实例内部一个数组。所以堆上有两个对象。此外,虽然您可以精确控制您创建的数组的大小,但 ArrayList 保存的数组可以具有 >= 元素数 <= Integer.MAX_VALUE 的任何大小。

巧合的是,ArrayList 内部直接使用元素索引作为数组索引,因此元素的顺序与普通数组中的顺序相同。但这是一个实现细节,您通常不关心 List 如何在内部组织其数据(毕竟 List 的目的是抽象出杂乱的细节)。

于 2012-07-25T16:57:17.517 回答