Java中ArrayList和LinkedList区别
来源:互联网 发布:中国国民党知乎 编辑:程序博客网 时间:2024/06/11 00:07
ArrayList和LinkedList的大致区别如下:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
上代码:
1 static final int N=50000; 2 static long timeList(List list){ 3 long start=System.currentTimeMillis(); 4 Object o = new Object(); 5 for(int i=0;i<N;i++) { 6 list.add(0, o); 7 } 8 return System.currentTimeMillis()-start; 9 }10 static long readList(List list){11 long start=System.currentTimeMillis();12 for(int i=0,j=list.size();i<j;i++){13 14 }15 return System.currentTimeMillis()-start;16 }17 18 static List addList(List list){19 Object o = new Object();20 for(int i=0;i<N;i++) {21 list.add(0, o);22 }23 return list;24 }25 public static void main(String[] args) {26 System.out.println("ArrayList添加"+N+"条耗时:"+timeList(new ArrayList()));27 System.out.println("LinkedList添加"+N+"条耗时:"+timeList(new LinkedList()));28 29 List list1=addList(new ArrayList<>());30 List list2=addList(new LinkedList<>());31 System.out.println("ArrayList查找"+N+"条耗时:"+readList(list1));32 System.out.println("LinkedList查找"+N+"条耗时:"+timeList(list2));33 }
当我们在集合中装5万条数据,测试运行结果如下:
显然我们可以看出ArrayList更适合读取数据,linkedList更多的时候添加或删除数据。
ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。
LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间。
阅读全文
0 0
- Java中ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- Java中ArrayList和 LinkedList区别
- Java中ArrayList和 LinkedList区别
- JAVA中ArrayList和LinkedList的区别
- Java中ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- java中 ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- java中ArrayList和LinkedList的区别
- Java 中ArrayList 和 LinkedList的区别
- java中.ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- Java中ArrayList和LinkedList区别
- Strom集群安裝,Python安裝,Strom配置,Strom常用命令
- MySQL触发器使用详解
- XMLHttpRequest Level 2 使用指南
- java的单例与c的联合体
- 深度学习——Xavier初始化方法
- Java中ArrayList和LinkedList区别
- 在docker中使用mongo数据库,在局域网访问
- 使用 Phabricator & Arcanist 进行 Code Review 的流程
- 使用AsyncTask加载网络图片并保存到手机本地
- shel脚本编辑hosts文件(awk、sed、ed)
- Android N SIM 卡信息加载流程
- 在docker中使用mysql数据库,在局域网访问
- TCP的3次握手与4次挥手
- java容器之五_HashMap