java List集合记录 ArrayList和LinkedList的区别
来源:互联网 发布:帕特森 知乎 编辑:程序博客网 时间:2024/06/05 06:02
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于元素的查找,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为只需要移动指针的位置。ArrayLis需要移动数据。简单举例如下
只要在大量炒作数据的时候才会看出 两者之间的区别 每次像第一个元素放入一个数字 结果运行如下
List<Object> link = new LinkedList<>();
List<Object> arry = new ArrayList<>(30000);
long time1 = new Date().getTime();
for (int m = 0; m < 200000; m++) {
link.add(0, null); // 当在200000条数据之前插入20000条数据时,LinkedList只用了1125多ms.这就是LinkedList的优势所在
}
long time2 = new Date().getTime();
System.out.println("LinkedList cost time:" + (time2 - time1));
for (int n = 0; n < 200000; n++) {
arry.add(0, null); // 当在200000条数据之前插入20000条数据时,ArrayList用了18375多ms.时间花费是arraylist的近20倍(视测试时机器性能)
}
long time3 = new Date().getTime();
System.out.print(" arraylist cost time:"+(time3-time2));
LinkedList cost time:12
arraylist cost time:74
因为每次操作数据的时候 每个元素都需要后移移动次数较多 空间复杂度高 而LinkedList只需要变更 第一个元素的指针的位置即可 因此性能快。
如果每次只是在集合的末尾追加一个元素 性能几乎是一样的 代码如下。扩大循环次数
数组的内置函数 例如 indexOf,lastIndexOf,contains 几乎没有什么区别 不在赘述。
ArrayList 随机访问速度要快于LinkedList. 只是理论上分析,事实上相差不是很大。代码衔接上面
- java List集合记录 ArrayList和LinkedList的区别
- 【Java集合之List】ArrayList和LinkedList区别
- java基础之集合List-ArrayList、LinkedList、Vector的区别
- java集合Collection的List ArrayList LinkedList 区别
- java基础(集合List-ArrayList、LinkedList、Vector的区别)
- Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别
- java集合——数组、List和ArrayList、LinkedList的区别
- Java集合框架里ArrayList Vector和LinkedList的区别
- java集合框架04--ArrayList和LinkedList的区别
- 关于java集合(3)-ArrayList和LinkedList的区别
- java中List、ArrayList、LinkedList的区别
- 集合-Arraylist和LinkedList的区别
- List 和 LinkedList/ArrayList 声明的区别
- list,arraylist和linkedlist的区别
- Java集合-ArrayList和LinkedList
- java的List集合们ArrayList vs. LinkedList vs. Vector
- java ArrayList 和 LinkedList的区别
- JAVA中ArrayList和LinkedList的区别
- 遍历、筛选for in / forEach()
- 嵌入式Linux开发简介
- 福州茉莉花茶企第三次在京亮相 茉莉花香获赞美
- HTML-h、p、a、img标签小试
- 技巧与知识
- java List集合记录 ArrayList和LinkedList的区别
- 从苏宁电器到卡巴斯基第10篇:我在苏宁电器当营业员 II
- House Robber
- org.hibernate.LazyInitializationException: could not initialize proxy - no Session
- Tyvj1098 任务安排
- Colorful Image Colorization 的环境配置
- android-Canvas
- Linux下创建静态、动态库
- ADI的ADXL345三轴加速度传感器,实现自由落体,静止和移动的寄存器驱动程序