LinkedList与ArrayList的性能比较
2017-08-04 02:14
429 查看
package jiben.data; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class Listsd { public static void main(String[] args) { // TODO Auto-generated method stub //添加记录是 int sum = 10000000; //移除记录数 int rm = 300; //修改记录数 int cha = 30000; System.out.println("start add "+sum/10000+"W rows; rm "+300+" rows;cha "+cha+" rows"); System.out.println("--------------------------------------"); System.out.println(""); System.out.println(""); long n = System.nanoTime(); List<String> al = new ArrayList<String>(); Listsd.test(al,sum,rm,cha,n); n = System.nanoTime(); al = new LinkedList<String>(); Listsd.test(al,sum,rm,cha,n); } public static void test(List<String> al,int sum,int rm,int cha,long n){ if(al instanceof ArrayList) System.out.println("ArrayList"); else System.out.println("LinkedList"); System.out.println("init time(ns) "+(System.nanoTime()-n)); long s = System.currentTimeMillis(); for(int i=0;i<sum;i++){ al.add("hello"); } System.out.println("add time "+(System.currentTimeMillis()-s)); s = System.currentTimeMillis(); ListIterator<String> it = al.listIterator(); while(it.hasNext()){ it.next(); } System.out.println("read time "+(System.currentTimeMillis()-s)); s = System.currentTimeMillis(); for(int i=0;i<cha;i++) al.set(i, "word"); System.out.println("change rows time "+(System.currentTimeMillis()-s)); s = System.currentTimeMillis(); for(int i=0;i<rm;i++) al.remove(i); System.out.println("remove rows time "+(System.currentTimeMillis()-s)); s = System.currentTimeMillis(); al.clear(); System.out.println("clear time "+(System.currentTimeMillis()-s)); System.out.println("--------------------------------------"); System.out.println(""); System.out.println(""); } }
console结果:
start add 1000W rows; rm 300 rows;cha 30000 rows
--------------------------------------
ArrayList
init time(ns) 39822
add time 160
read time 11
change rows time 3
remove rows time 3163
clear time 12
--------------------------------------
LinkedList
init time(ns) 756210
add time 2831
read time 79
change rows time 644
remove rows time 0
clear time 66
--------------------------------------
结论选择List的时候
1.如果集合特别长没有删除元素的操作,首选ArrayList.否则选择LinkedList.ArrayList删除元素耗费时间远大于LinkedList.
2.集合不是很大,选择ArrayList(init、add、read的时间很短)
相关文章推荐
- ArrayList和LinkedList的各项操作性能比较
- ArrayList和LinkedList的各项操作性能比较
- ArrayList及LinkedList遍历方式及性能比较
- ArrayList和LinkedList性能比较
- ArrayList和LinkedList区别,性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- java性能优化-Arraylist与Linkedlist整改查性能比较
- ArrayList 与 LinkedList性能比较
- ArrayList和LinkedList性能比较
- ArrayList和LinkedList性能比较分析
- ArrayList、LinkedList、Vector性能比较
- 比较Java数组,ArrayList,LinkedList,Vector 性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- Java性能优化-Arraylist与Linkedlist整改查性能比较的简介与内容
- Java中arraylist和linkedlist源码分析与性能比较
- 关于LinkedList和ArrayList 插入元素的性能比较疑惑,知道的请指教......
- 既然LinkedList比ArrayList性能和易用行好那么多 为啥我们还是用ArrayList用的比较多呢?
- 比较List和ArrayList的性能及ArrayList和LinkedList优缺点
- JAVA集合类之ArrayList和LinkedList性能比较