ArrayList与LinkedList的区别
2017-04-19 11:53
218 查看
一.ArrayList
ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。它实现List接口、底层使用数组保存所有元素。其操作基本上是对数组的操作。
二.LinkedList
LinkedList是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。三.ArrayList与LinkedList的区别
从上面我们可以看出这两者之间在用法上并没有什么区别,底层实现无非就是一个数组一个链表了,但是它们在功能上有很大区别,这取决于它们之间的效率下面我们可以来证明一下ArrayList和LinkedList在增删操作和查询操作上的效率差距
public abstract class ListTemp { public abstract void Add(); public abstract void Select(); public long Gettime() { return System.currentTimeMillis(); } } public class ListDemo extends ListTemp{ private List<Integer> arraylist; private List<Integer> linkedlist; @Override public void Add() { long arraystart=Gettime(); for(int i=0;i<100000;i++) { arraylist.add(0,i); } long arrayend=Gettime(); System.out.println("ArrayList添加所用时:"+(arrayend-arraystart)); System.out.println("***********************************"); long linkedstart=Gettime(); for(int i=0;i<100000;i++) { linkedlist.add(0,i); } long linkedend=Gettime(); System.out.println("LinkedList添加所用时:"+(linkedend-linkedstart)); } @Override public void Select() { long arraystart=Gettime(); for(int k=0;k<arraylist.size();k++) { if(arraylist.get(k)==1) { break; } } long arrayend=Gettime(); System.out.println("ArrayList删除所用时:"+(arrayend-arraystart)); System.out.println("***********************************"); long linkedstart=Gettime(); for(int k=0;k<linkedlist.size();k++) { if(linkedlist.get(k)==1) { break; } } long linkedend=Gettime(); System.out.println("LinkedList删除所用时:"+(linkedend-linkedstart)); } @Test public void Test() { arraylist=new ArrayList<Integer>(); linkedlist=new LinkedList<Integer>(); Add(); System.out.println(); Select(); } }
打印结果:
ArrayList添加所用时:2752 *********************************** LinkedList添加所用时:16 ArrayList删除所用时:26 *********************************** LinkedList删除所用时:21768
所以对于LinkedList经常用在增删操作较多而查询操作很少的情况下,而ArrayList则相反,经常用在查询操作较多而增删操作较少的情况下
END!!!!!!!!!
相关文章推荐
- ArrayList和LinkedList的区别是什么?举例说明LinkedList可实现的功能
- Vector和ArrayList,Hashtable和HashMap,ArrayList和LinkedList的区别
- Java 中Vector、ArrayList和LinkedList 的区别
- ArrayList Vector LinkedList 区别与用法
- ArrayList和LinkedList区别?
- ArrayList Vector LinkedList 区别与用法
- ArrayList和LinkedList的大致区别
- Java 容器中Vector、ArrayList和LinkedList 的区别
- [转载] ArrayList Vector LinkedList 区别与用法 以及对 List,Map,Set 的解析
- ArrayList Vector LinkedList 区别与用法
- ArrayList,LinkedList以及Vector的区别?
- ArrayList Vector LinkedList 区别与用法 [转]
- Java 中Vector、ArrayList和LinkedList 的区别
- ArrayList和LinkedList的区别
- Java知识点Vector和ArrayList,Hashtable和HashMap,ArrayList和LinkedList的区别
- Java 中Vector、ArrayList和LinkedList 的区别
- ArrayList Vector LinkedList 区别与用法
- ArrayList Vector LinkedList 区别与用法
- linkedlist和arraylist的区别
- ArrayList和LinkedList的大致区别