JAVA里,ArrayList在内存分配上究竟是怎样的? 本帖最后由 huge92 于 2014-07-19 20:58:16 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 内部是数组实现的,看名字就看出来了,java里面还有LinkedList,内存是动态分配的。 你这样胡乱猜测不如安心看一下源码。。思而不学则殆ArrayList是用数组实现的,这个数组的内存是连续的,不存在你说的相邻元素之间还隔着其他内存什么的索引ArrayList时,速度比原生数组慢是因为你要用get方法,这是一个函数调用,而数组直接用[ ]访问,相当于直接操作内存地址,速度当然比函数调用快 1、新建ArrayList的时候,JVM为其分配一个默认或指定大小的连续内存区域(封装为数组)2、每次增加元素会检查容量,不足则创建新的连续内存区域(大小等于初始大小+步长),也用数组形式封装,并将原来的内存区域数据复制到新的内存区域,然后再用ArrayList中引用原来封装的数组对象的引用变量引用到新的数组对象:elementData = Arrays.copyOf(elementData, newCapacity); private安全性 中文乱码问题 使用JAAS的问题 比较数据 java中有没有类似C#委托功能的机制 about hashCode() ? 各位大侠!请帮小弟看看这个问题,急啊! class文件生成不了 JAVA项目代码书写规范 问大哥大姐们个问题啊,小第编了自己的第一个JAVA问题。用JAVAC编译能通过啊!可是用JAVA不能执行啊! 关于反射的问题 新手乱入求指导
索引ArrayList时,速度比原生数组慢是因为你要用get方法,这是一个函数调用,而数组直接用[ ]访问,相当于直接操作内存地址,速度当然比函数调用快