Java基础教程35-LinkedList和ArrayListed的区别
来源:互联网 发布:骰子软件 编辑:程序博客网 时间:2024/06/04 01:27
前面分别介绍了ArrayList和LinkedList,那么这两个有什么区别呢。特别是两者在操作性能这块,经常在面试中被问到。我也从网上拷贝了几条不同点过来:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于随机新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
注意这里红色字体随机标出来,看完下面例子,你就明白为什么这里要标随机新增操作。
package lesson01;import java.util.ArrayList;import java.util.LinkedList;public class MyClass {public static void main(String[] args){long n = (long)1E6;ArrayList arrayList = new ArrayList();long milis = System.currentTimeMillis();for(int i= 0; i<n; i++){arrayList.add(i);}System.out.println("新增操作arraylist 花费了 "+(System.currentTimeMillis()-milis) +" 毫秒");LinkedList linkedList = new LinkedList();milis = System.currentTimeMillis();for(int i= 0; i<n; i++){linkedList.add(i);}System.out.println("新增操作linkedlist 花费了 "+(System.currentTimeMillis()-milis) +" 毫秒");// arraylist删除元素milis = System.currentTimeMillis();arrayList.remove(1E5);System.out.println("删除元素arraylist 花费了 "+(System.currentTimeMillis()-milis) +" 毫秒");// linkedlist删除元素milis = System.currentTimeMillis();linkedList.remove(1E5);System.out.println("删除元素linkedlist 花费了 "+(System.currentTimeMillis()-milis) +" 毫秒");// arraylist get 中间元素milis = System.currentTimeMillis();arrayList.get((int)n/2);System.out.println("访问中间元素arraylist 花费了 "+(System.currentTimeMillis()-milis) +" 毫秒");// linkedlist get 中间元素milis = System.currentTimeMillis();linkedList.get((int)n/2);System.out.println("访问中间元素linkedlist 花费了 "+(System.currentTimeMillis()-milis) +" 毫秒");}}运行结果
新增操作arraylist 花费了 345 毫秒新增操作linkedlist 花费了 6545 毫秒删除元素arraylist 花费了 26 毫秒删除元素linkedlist 花费了 80 毫秒访问中间元素arraylist 花费了 0 毫秒访问中间元素linkedlist 花费了 144 毫秒会不会发现,在新增操作,LinkedList花费时间比ArrayList要多很多,不是说新增操作,LinkedList要更快吗。所以,前面标准红色字体随机新增操作是前提,上面例子中,我们在linkedList是做从尾部顺序的新增操作,而不是随机新增,由于linkedList要移动指针,所以这里打印出来的时间要比arraylist要多。
阅读全文
0 0
- Java基础教程35-LinkedList和ArrayListed的区别
- java ArrayList 和 LinkedList的区别
- JAVA中ArrayList和LinkedList的区别
- java中ArrayList和LinkedList的区别
- Java 中ArrayList 和 LinkedList的区别
- java中ArrayList和LinkedList的区别
- Java中的LinkedList 和 ArrayList的区别
- Java数据结构------ArrayList和LinkedList的区别
- Java中LinkedList和ArrayList的区别
- Java中ArrayList和LinkedList的区别
- java基础知识:ArrayList和LinkedList的区别
- Java中arraylist和linkedlist的区别
- java中ArrayList和LinkedList的区别
- java linkedlist 和 arraylist的区别
- JAVA中ArrayList 和 LinkedList的区别
- java中ArrayList和LinkedList的区别
- Java ArrayList和LinkedList的区别
- java中ArrayList和LinkedList的区别
- UVa Spreading the Wealth-11300(数学推导+中位数)
- AtomicReference(无锁的对象引用)与AtomicStampedReference与(带有时间戳的对象引用)
- JAVA学习日记----------
- 1008. 数组元素循环右移问题 (20) Python 2编译
- 黑白棋算法简单实现与基于Qt的GUI编程的综合应用
- Java基础教程35-LinkedList和ArrayListed的区别
- List删除元素报Exception in thread "main" java.util.ConcurrentModificationException异常,或数据删除不完整
- Kotlin学习(二)——基本命令行操作hello world
- 被低估的BIRT报表(二):Birt也可以很漂亮
- 从vue文件中抽取出子组件的流程及过程中踩过的坑
- Opencv绘制灰度/彩色图像的直方图及直方图的均衡化实例及源代码
- 蓝牙模块调试笔记
- 51nod 1580 铺管道
- Android 创建自定义控件