ArrayList和LinkedList的区别
来源:互联网 发布:api数据接口 编辑:程序博客网 时间:2024/05/17 19:58
LinkedList和ArrayList性能差异分析:
为什么LinkedList中插入元素很快,而ArrayList中插入元素很慢?
1. 通过add(int index, E element)向LinkedList插入元素时。先是在双向链表中找到要插入节点的位置index;找到之后,再插入一个新节点。
双向链表查找index位置的节点时,有一个加速动作:若index < 双向链表长度的1/2,则从前向后查找; 否则,从后向前查找。
2. 向ArrayList指定位置插入元素,首先是ensureCapacity(size+1),它的作用是“确认ArrayList的容量,若容量不够,则增加容量。”
真正耗时的操作是 System.arraycopy(elementData, index, elementData, index + 1, size -index); 然后会移动数组index之后所有元素。
为什么LinkedList中随机访问很慢,而ArrayList中随机访问很快?
1. LinkedList:
通过get(int index)获取LinkedList第index个元素时。先是在双向链表中找到要index位置的元素;找到之后再返回。
双向链表查找index位置的节点时,有一个加速动作:若index < 双向链表长度的1/2,则从前向后查找; 否则,从后向前查找。
2. ArrayList:
通过get(int index)获取ArrayList第index个元素时。直接返回数组中index位置的元素,而不需要像LinkedList一样进行查找。阅读全文
0 0
- linkedlist和arraylist的区别
- ArrayList和LinkedList的区别
- ArrayList和LinkedList的区别
- ArrayList和LinkedList的区别
- ArrayList和LinkedList的区别
- ArrayList和LinkedList的区别
- arraylist和linkedlist的区别!
- LinkedList和ArrayList的区别
- LinkedList和ArrayList的区别
- LinkedList和ArrayList的区别
- ArrayList和LinkedList的区别
- ArrayList和LinkedList的区别
- LinkedList和ArrayList的区别
- ArrayList和LinkedList的区别
- ArrayList和LinkedList的区别
- ArrayList 和linkedlist的区别
- ArrayList和LinkedList的区别
- ArrayList和LinkedList的区别
- Linux下的tar解压缩命令
- 台大DL—week1 笔记
- Android launcher3 -- launcher3源码2
- C++只读成员函数、只读对象
- javascript时间格式加8小时
- ArrayList和LinkedList的区别
- EasyDSS RTMP流媒体服务器搭建直播集群
- Thinking in java-36 Regular expression正则表达式
- C输入与输出
- Linux下TCP协议的C/S架构实现
- java多线程之yeild学习
- Android--异步加载图片
- 模拟实现sleep函数——mysleep()
- 服务器主动断开连接异常