首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java集合表的内存结构

Java集合表的内存结构
EN

Stack Overflow用户
提问于 2015-05-30 17:11:27
回答 2查看 76关注 0票数 0

当我们写的时候-

ArrayList al=new ArrayList(10);

有时会写一个数组,就像-

RefVar = new dataType[10];

内存中发生了什么?内存是连续排列的还是分散排列的?

EN

回答 2

Stack Overflow用户

发布于 2015-05-30 17:19:42

原则上,Java语言-无论是语言规范还是VM规范-都没有提到如何实现对象和数组,也不保证连续的内存分配。

但在实践中,数组是连续的(只在第一维!),并且ArrayList是使用数组实现的,因此其中的项引用是连续的。尽管ArrayList的实现包括与实际数组分离的其他字段。

如果您向内部数组已满的ArrayList添加一个元素,它将在内部分配一个更大的新数组,并将所有现有的元素引用复制到该数组。因此,即使发生这种情况,元素引用仍然是连续的(实际上)。

票数 3
EN

Stack Overflow用户

发布于 2015-05-30 17:16:10

对于array%s,元素将位于连续的内存位置。

由于ArrayList使用数组数据结构为其元素维护基于索引的系统,因此它的元素也保留在连续的内存位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30544325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档