Java中ArrayList和LinkedList效率
来源:互联网 发布:福建师范大学软件学院 编辑:程序博客网 时间:2024/06/07 01:56
开发中常用list集合,但是一直不清楚ArryList和LinkedList的效率有何区别,所以今天写了点demo,做个记录
1.直接遍历整个集合
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class ListTest{ public static void main(String[] args) { List<String> arrayList = new ArrayList<String>(); List<String> linkedList = new LinkedList<String>(); for(int i = 0; i < 10000000; i++) { arrayList.add("a"); linkedList.add("a"); } long startArray = System.currentTimeMillis(); for(String a : arrayList) { if("b".equals(a)) { System.out.println(a); } } System.out.println("arrayList耗时:"+(System.currentTimeMillis()-startArray)); long startLinked = System.currentTimeMillis(); for(String b : linkedList) { if("b".equals(b)) { System.out.println(b); } } System.out.println("linkedList耗时:"+(System.currentTimeMillis()-startLinked)); }}执行结果:
arrayList耗时:106
linkedList耗时:169
给list集合放入10000000个字符串,简单遍历,ArrayList的效率明显优于LinkedList
2.在list开头插入数据
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class ListTest{ public static void main(String[] args) { List<String> arrayList = new ArrayList<String>(); List<String> linkedList = new LinkedList<String>(); for(int i = 0; i < 100000; i++) { arrayList.add("a"); linkedList.add("a"); } long startArray = System.currentTimeMillis(); for(int i = 0; i < 100000; i++) { arrayList.add(0,"b"); } System.out.println("arrayList耗时:"+(System.currentTimeMillis()-startArray)); long startLinked = System.currentTimeMillis(); for(int i = 0; i < 100000; i++) { linkedList.add(0,"b"); } System.out.println("linkedList耗时:"+(System.currentTimeMillis()-startLinked)); }}执行结果
arrayList耗时:11411
linkedList耗时:19
给list集合放入100000个字符串,在list开头分别插入同样的100000个字符串,LinkedList效率明显优于ArrayList,相差很大。
3.同2一样的代码,在List集合中间位置(第50000处)插入100000个字符串,执行结果:
arrayList耗时:3960
linkedList耗时:21210
在List集合中间位置(第50000处)插入100000个字符串,ArrayList的执行效率反而高于LinkedList。说明和位置是有关系的。
4.在list结尾添加数据
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class ListTest{ public static void main(String[] args) { List<String> arrayList = new ArrayList<String>(); List<String> linkedList = new LinkedList<String>(); for(int i = 0; i < 100000; i++) { arrayList.add("a"); linkedList.add("a"); } long startArray = System.currentTimeMillis(); for(int i = 0; i < 10000000; i++) { arrayList.add("b"); } System.out.println("arrayList耗时:"+(System.currentTimeMillis()-startArray)); long startLinked = System.currentTimeMillis(); for(int i = 0; i < 10000000; i++) { linkedList.add("b"); } System.out.println("linkedList耗时:"+(System.currentTimeMillis()-startLinked)); }}
执行结果
arrayList耗时:205
linkedList耗时:5110
给list集合放入100000个字符串,在list结尾分别插入同样的10000000个字符串,同3一样,ArrayList的执行效率高于LinkedList
从上边看出,如果对list只是简单遍历、插入,还是使用ArrayList比较好。只有在list头部插入数据时,LinkedList效率更好。具体的使用那种List,还需要根据项目的实际情况来选择。
另外,在网络上说在容器前1/10处插入数据时,linkedlist性能明显优于arraylist,因为没有项目实际应用场景,我这里没有再写demo测试,有兴趣可以自己本地测试一下。
- Java中ArrayList和LinkedList效率
- JAVA中Arraylist和LinkedList
- java中ArrayList和LinkedList
- Java中 ArrayList和LinkedList
- 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区别
- 关于NanoPi NEO(全志H3)平台下的LEDE(openWRT)系统的编译(分色排版)(不知道怎么烧录)
- MySQL主从复制与主主复制
- 诸子百家
- 当css样式是绝对定位时,让DIV居中显示
- Ubuntu下关于E: Sub-process /usr/bin/dpkg returned an error code的问题
- Java中ArrayList和LinkedList效率
- 数字图像处理成长之路13:SIFT之极值点(子像元插值)
- jquery 动态移除/增加onclick 增加,移除,修改一个html标签的class名字
- Mybatis Select...for update用法
- Python学习笔记:四
- Svn代码库迁移到Git
- django model的get和filter方法的区别
- mysql使用exists进行查询
- 数据结构与算法分析——Hash表