arraylist与linkedlist的区别与性能测试
/**
*arraylist和linkedlist的适用场合。
**/
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Date;
public class Demo2{
public static void main(String[]aa){
switch (aa[0]){
case "0":arrylistInset();break;
case "1":linkedlistInset();break;
case "2":arrylistGet();break;
case "3":linkedlistGet();break;
} }
public static void arrylistInset(){ //967ms
List<Integer> list = new ArrayList<Integer> (); for(int i=0;i<5000;i++){//创建数据表
for(int j=1;j<1000;j++){
list.add(i+j);
}
}
Long begin = new Date().getTime();
for(int i=3;i<1000;i+=3){//插入数据
list.add(i,i);
}
Long end = new Date().getTime();
System.out.println("cost : " + (end - begin)+ " ms");
System.out.println("number:" + list.size());
}
public static void linkedlistInset(){ //15ms
List<Integer> list = new LinkedList<Integer> (); for(int i=0;i<5000;i++){//创建数据
for(int j=1;j<1000;j++){
list.add(i+j);
}
}
Long begin = new Date().getTime();
for(int i=3;i<1000;i+=3){//插入数据
list.add(i,i);
}
Long end = new Date().getTime();
System.out.println("cost : " + (end - begin)+ " ms");
System.out.println("number:" + list.size());
}
public static void arrylistGet(){ //get 1w条数据花费时间:0ms
// 10w条:0ms;
List<Integer> list = new ArrayList<Integer> (); for(int i=0;i<5000;i++){//创建数据表
for(int j=1;j<1000;j++){
list.add(i+j);
}
}
Long begin = new Date().getTime();
for(int i=3;i<50000;i++){//插入数据
list.get(i);
}
Long end = new Date().getTime();
System.out.println("cost : " + (end - begin)+ " ms");
System.out.println("number:" + list.size());
}
public static void linkedlistGet(){ //get 1w条数据花费时间:219ms
// 10w条:6616ms;
List<Integer> list = new LinkedList<Integer> (); for(int i=0;i<5000;i++){//创建数据
for(int j=1;j<1000;j++){
list.add(j);
}
}
Long begin = new Date().getTime();
for(int i=3;i<50000;i++){//插入数据
list.get(i);
}
Long end = new Date().getTime();
System.out.println("cost : " + (end - begin)+ " ms");
System.out.println("number:" + list.size());
}
}
/**
*总结:
*1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
*2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
*3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
**/
arraylist与linkedlist的区别与性能测试的更多相关文章
- LintCode Reverse LinkedList (ArrayList 和 LinkedList 的区别)
1. ArrayList 和 LinkedList 的区别 http://pengcqu.iteye.com/blog/502676 2. How to reverse LinkedList http ...
- 你真的说的清楚ArrayList和LinkedList的区别吗
参见java面试的程序员,十有八九会遇到ArrayList和LinkedList的区别?相信很多看到这个问题的人,都能回答个一二.但是,真正搞清楚的话,还得花费一番功夫. 下面我从4个方面来谈谈这个问 ...
- java集合框架05——ArrayList和LinkedList的区别
前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容. List概括 先来回顾一下List在Collection中的的框架图 ...
- Java中ArrayList与LinkedList的区别
Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...
- Java进阶(十七)ArrayList与LinkedList的区别
ArrayList与LinkedList的区别 ArrayList ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayLis ...
- 【转】ArrayList与LinkedList的区别和适用场景
ArrayList 优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的). 缺点:因为地址连续,当要插入和删除时,Arra ...
- JAVA中ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题
近期在做一个对接京东的电商平台,所以对各个地方的效率考虑的比较多,今天深挖了一下ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题,首先说一下两种 ...
- 理解ArrayList与LinkedList的区别
一.先来看看ArrayList与LinkedList 在JDK中所在的位置 从图中可以看出,ArrayList与LinkedList都是List接口的实现类,因此都实现了List的所有未实现的方法,只 ...
- java集合框架之ArrayList与LinkedList的区别
参考http://how2j.cn/k/collection/collection-arraylist-vs-linkedlist/690.html#nowhere ArrayList和LinkedL ...
随机推荐
- Daily Scrum 10.31
今天是万圣节,也是编译课程设计第一次作业截至的日子,但由于大家对时间的合理安排,我们还是完成了一定的任务量. 下面是今天的Task统计: 不仅燃尽图和燃速图出不来,连那个所有迭代状态的图也出不来了.. ...
- AspxSpy2014 Final
受bin牛委托修改并发布,版权归bin牛所有. Bug/建议提交:zcgonvh@rootkit.net.cn 祝各位马年大吉,财源滚滚. 免责声明: 本程序只用于管理员安全检测,使用前请注意环境与法 ...
- liunx系统计划任务管理(at/crond调度)
一.at命令 at命令格式at HH:MM YYYY-MM-DD 其中 HH(小时):MM(分钟) YYYY(年)-MM(月份)-DD(日) 启动atd进程 /etc/init.d/atd start ...
- IOS第九天(2:QQ聊天界面键盘优化 和自动回复)
***********controller.m #import "HMViewController.h" #import "HMMessageModel.h" ...
- LaTex 基础
一.文档 \documentclass{article} %book, report, letter 二.宏包 \usepackage{amsmath} 三.正文 \begin{document} \ ...
- HDU 1565&1569 方格取数系列(状压DP或者最大流)
方格取数(2) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- phpstorm 实用快捷键 和 注释
1. 注释 类似 /**退款详情 * @param * @param * @param * @return * @author */ 在方法中引入,直接/**+enter键 2.快捷建 CTRL ...
- c#组元(Tuple)的使用
组元(Tuple)是C# 4.0引入的一个新特性,可以在.NET Framework 4.0或更高版本中使用.组元使用泛型来简化类的定义,多用于方法的返回值.在函数需要返回多个类型的时候,就不必使用o ...
- Android中Service(服务)详解
http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...
- reporting service & wpf
WPF做Windows程序界面很好很强大,RDLC做报表免费又好用,如何将两者强强联合呢? 方法1: 可以直接在WPF项目中加入一个WinForm窗体,在这个窗体上进行报表操作,与一般的Wi ...