java – ArrayList如何提供随机访问行为?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – ArrayList如何提供随机访问行为?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1445字,纯文字阅读大概需要3分钟。
内容图文
ArrayList简单地实现为Object [].我知道它实现了RandomAccess接口,但它只是一个标记接口……
所以,我的问题是:为什么/如何使用ArrayList提供随机访问功能?
编辑1:也许我应该更清楚……我想要理解的是为什么在它是Object []时访问元素的时间是恒定的?
解决方法:
通过比较LinkedList,ArrayList和Array可以使事情变得简单:
链表:
+----+ +----+ +----+ +----+
|Head| ---> | e1 | ---> | e2 | ---> | e3 | ---> null
+----+ +----+ +----+ +----+
现在,假设我想获得元素e2,但是链表本身保存了headNode的引用.要到达e2,我必须从HeadNode一直遍历到e2.显然,这不提供恒定的时间操作,因为如果不遍历列表就无法直接访问任何元素.
阵:
+----++----++----++----+
| e1 || e2 || e3 || e4 | (value)
+----++----++----++----+
| 01 || 02 || 03 || 04 | (address)
+----++----++----++----+
想象一下,当你有一个包含数组的变量时,只有第一个元素(e1)的地址保存在变量中.以下数组元素将存储在下一个可用内存块中.数组元素在存储器中以连续顺序彼此相邻.当您需要访问特定元素时,这使其成为一个恒定的时间操作.例如,当您要访问e3时,每个内存块为4个字节.从第一个元素开始,从数组引用移动2个内存块(8个字节).恒定时间操作的关键是:不需要遍历.它只需根据每个块的大小和要移动的块数(由数组索引表示)计算从当前位置移位的字节数.在Java中,当您尝试超出数组的已分配内存的范围时,它会为您提供ArrayIndexOutOfBoundsException.
数组列表:
Arraylist使用相同的数组概念.它最初将分配10的大小.当需要增长(例如添加更多元素)时,它会创建一个新的数组,并增加存储长度.由于数据的存储是通过阵列进行的,因此操作时间将与数组相同(即恒定时间).
内容总结
以上是互联网集市为您收集整理的java – ArrayList如何提供随机访问行为?全部内容,希望文章能够帮你解决java – ArrayList如何提供随机访问行为?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。