/**
*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的区别与性能测试的更多相关文章

  1. LintCode Reverse LinkedList (ArrayList 和 LinkedList 的区别)

    1. ArrayList 和 LinkedList 的区别 http://pengcqu.iteye.com/blog/502676 2. How to reverse LinkedList http ...

  2. 你真的说的清楚ArrayList和LinkedList的区别吗

    参见java面试的程序员,十有八九会遇到ArrayList和LinkedList的区别?相信很多看到这个问题的人,都能回答个一二.但是,真正搞清楚的话,还得花费一番功夫. 下面我从4个方面来谈谈这个问 ...

  3. java集合框架05——ArrayList和LinkedList的区别

    前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容. List概括 先来回顾一下List在Collection中的的框架图 ...

  4. Java中ArrayList与LinkedList的区别

    Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...

  5. Java进阶(十七)ArrayList与LinkedList的区别

    ArrayList与LinkedList的区别 ArrayList ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayLis ...

  6. 【转】ArrayList与LinkedList的区别和适用场景

    ArrayList 优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的). 缺点:因为地址连续,当要插入和删除时,Arra ...

  7. JAVA中ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题

    近期在做一个对接京东的电商平台,所以对各个地方的效率考虑的比较多,今天深挖了一下ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题,首先说一下两种 ...

  8. 理解ArrayList与LinkedList的区别

    一.先来看看ArrayList与LinkedList 在JDK中所在的位置 从图中可以看出,ArrayList与LinkedList都是List接口的实现类,因此都实现了List的所有未实现的方法,只 ...

  9. java集合框架之ArrayList与LinkedList的区别

    参考http://how2j.cn/k/collection/collection-arraylist-vs-linkedlist/690.html#nowhere ArrayList和LinkedL ...

随机推荐

  1. POJ2488 dfs

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 41972   Accepted: 14 ...

  2. hdu-acm steps 免费馅饼

    /*dp入门级的题目,和数塔是一样的,这道题不用做什么优化,感觉时间复杂度不会超.主要还是细节上的问题, 这道题的状态和状态方程都容易找到,采用自底向上的方式会好很多*/ #include" ...

  3. vs2013打开 2010项目时: 请确认 <Import> 声明中的路径正确,且磁盘上存在该文件

    错误原因:原来2010项目中使用的路径是 v11.0,但是我的 C:\Program Files (x86)\MSBuild\12.0\ 是 12.0,所以该成 12.0 解决办法:将项目文件(.cs ...

  4. 演示一个VPD进行数据访问控制的示例

    1.确认数据库版本 2.环境准备 创建一张顾客表(customer),其中包括了顾客姓名,年龄,姓名,地址,收入等, 我们需要使用LIVAN用户只能查看收入为2000元以下的顾客信息. 3.实验控制策 ...

  5. CommonUtils.java

    package com.vcredit.framework.utils; import java.lang.reflect.InvocationTargetException;import java. ...

  6. IOS第11天(3:UIPickerView省市联动)

    ********* #import "ViewController.h" #import "Province.h" @interface ViewControl ...

  7. JDK API从下载到使用

    经常有人问我一些java常用类的使用方法,还有一些问某个常用类是干啥的.这些问题都是不会查询jdk api,对常用类的方法不熟悉等情况.于是,经过再三思考决定编写jdk api查询使用手册. ☆准备工 ...

  8. NEC学习 ---- 模块 - tab[含标题]

    简要介绍, 默认居左, Tab不定宽,  “标题”和“更多”可删, 扩展类可以自由组合, 依赖于reset.css(之前的模块以及布局都依赖这个css) 那么这个效果是怎么实现的呢? CSS代码: . ...

  9. 字节流和字符流(InputStream类和OutputStream类)

    java流包括字节流和字符流,字节流通过I/O设备以字节数据的方式读入,而字符流则是通过字节流读入数据转换成字符"流"的形式由用户驱使. InputStream是所有字节输入流的父 ...

  10. @Override的作用

    @Override是伪代码,表示重写(不写也可以,但是有些IDE会报warning),不过写上有如下好处: 1.可以当注释用,方便阅读:2.编译器可以给你验证@Override下面的方法名是否是你父类 ...