研究ArrayList的性能,有助于我们在实际工作中更好的处理数据,与保存数据。(读本文之前最好先去看jdk1.7以上版本的ArrayList源码,研究ArrayList针对数组做的算法与数据结构思想)。
因时间原因,本文不分析代码。
如有错误之处,还请您务必在留言区留下您的宝贵经验。或发送邮箱:mvpxiaonan@foxmail.com 告知。
本人非常感谢!共同学习,共同进步!
作者:Java菜鸟 Edison丶楠
大o算法表示时间复杂度,专门用于计算性能相关的,在这里我们简单分析下Arrayust的性能:
针对Arrayist存储数据的增删改查(CRUD)
1):保存操作:
如果把数据保存在数组的最后一个位置,至少需要操作一次
如果把数据保存在数组的第一个位置如果存在N个元素,此时需要操作N次(后面的元素要整体后移).平均: (N+1)/2次N表示数组中元素的个数。如果要扩容更慢,性能更低
2):删除操作:
如果删除最后一个元素操作一次.如果删除第一一个元素,操作N次.平均: (N+1)/2次。
3):修改操作:操作1次.
4):查询操作:
如果根据索引查询元素:操作1次.
如果根据元素查询索引:此时使用线性搜索操作:平均: (N+1)/2次:
发现:基于数组的结构做查询是和修改是非常快的,但是做保存和删除操作比较慢了.
如果现在就想保证保存和删除操作的性能怎么办?
那么我们就要学习数据结构:链表(LinkedList).
链表将在下一文章更新!尽请期待...