不说废话,直接看代码:

 /**
* @author HuYang
* @date 2016年8月15日 下午3:26:43
*/
public class TestJiHe { private static List<Integer> aList = new ArrayList<Integer>();
private static List<Integer> kList = new LinkedList<Integer>();
//测试变量
private static int para; public static void add(List<Integer> list){
int i = 0;
long startTime = System.currentTimeMillis();
while(i<para){
list.add(i);
i++;
}
long endTime = System.currentTimeMillis();
System.out.println(list.getClass().getSimpleName()+" "+"添加用时:"+(endTime - startTime));
} public static void delete(List<?> list){
Random r = new Random();
int index = r.nextInt(para);
long startTime = System.currentTimeMillis();
list.remove(index);
long endTime = System.currentTimeMillis();
System.out.println(list.getClass().getSimpleName()+" "+"第"+index+"被删除:"+index+",删除用时> "+(endTime - startTime));
} public static void get(List<Integer> list){
Random r = new Random();
int index = r.nextInt(para);
long startTime = System.currentTimeMillis();
int value = list.get(index);
long endTime = System.currentTimeMillis();
System.out.println(list.getClass().getSimpleName()+" "+"第"+index+"数据是:"+value+",查询用时> "+(endTime - startTime));
} public static void iterator(List<?> list){
Iterator<?> inter = list.iterator();
long startTime = System.currentTimeMillis();
while(inter.hasNext()){
inter.next();
}
long endTime = System.currentTimeMillis();
System.out.println(list.getClass().getSimpleName()+" "+"遍历用时:"+(endTime - startTime));
} public static void main(String[] args){ //测试数据量赋值
para = 9999; //创建测试对象
aList = new ArrayList<Integer>();
kList = new LinkedList<Integer>(); //执行测试
add(aList);
iterator(aList);
get(aList);
delete(aList);
System.out.println("<<=====================>>");
add(kList);
iterator(kList);
get(kList);
delete(kList);
}
}

测试结果:

ArrayList 添加用时:3
ArrayList 遍历用时:2
ArrayList 第9629数据是:9629,查询用时> 0
ArrayList 第4227被删除:4227,删除用时> 0
<<=====================>>
LinkedList 添加用时:2
LinkedList 遍历用时:1
LinkedList 第3022数据是:3022,查询用时> 1
LinkedList 第266被删除:266,删除用时> 0

增加para的值为:99999(每次执行的用时结果和CPU的时间片分配有关,但是大致走势不变):

ArrayList 添加用时:10
ArrayList 遍历用时:9
ArrayList 第47622数据是:47622,查询用时> 0
ArrayList 第74386被删除:74386,删除用时> 0
<<=====================>>
LinkedList 添加用时:8
LinkedList 遍历用时:11
LinkedList 第4682数据是:4682,查询用时> 0
LinkedList 第62292被删除:62292,删除用时> 0

增加para的值为:999999(每次执行的用时结果和CPU的时间片分配有关,但是大致走势不变):

ArrayList 添加用时:21
ArrayList 遍历用时:9
ArrayList 第497726数据是:497726,查询用时> 0
ArrayList 第415678被删除:415678,删除用时> 0
<<=====================>>
LinkedList 添加用时:75
LinkedList 遍历用时:21
LinkedList 第111957数据是:111957,查询用时> 1
LinkedList 第151875被删除:151875,删除用时> 1

结果大家分析一下就知道了,不做阐述。但是总感觉是ArrayList的性能在数据量较大时会比LinkedList好些,不知道是否正确,还请大家多多指教。

欢迎留言补充。

Java中ArrayList和LinkedList性能的比较(结果总是怪怪的,如果有不当还请指出)。的更多相关文章

  1. Java中arraylist和linkedlist源代码分析与性能比較

    Java中arraylist和linkedlist源代码分析与性能比較 1,简单介绍 在java开发中比較经常使用的数据结构是arraylist和linkedlist,本文主要从源代码角度分析arra ...

  2. Java中ArrayList与LinkedList的区别

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

  3. java中ArrayList 和 LinkedList 有什么区别

    转: java中ArrayList 和 LinkedList 有什么区别 ArrayList和LinkedList都实现了List接口,有以下的不同点:1.ArrayList是基于索引的数据接口,它的 ...

  4. Java中ArrayList和LinkedList的性能分析

    ArrayList和LinkedList是Java集合框架中经常使用的类.如果你只知道从基本性能比较ArrayList和LinkedList,那么请仔细阅读这篇文章. ArrayList应该在需要更多 ...

  5. Java中ArrayList和LinkedList差别

    一般大家都知道ArrayList和LinkedList的大致差别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.  2.对于随机訪问get和set.A ...

  6. Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度

    一般大家都知道ArrayList和LinkedList的大致区别:      1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.      2.对于随机访问 ...

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

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

  8. Java中ArrayList和LinkedList的异同

    一:ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,ArrayList实现了长度可变的数组,在内存中分配连续的空间.遍历元素和随机访问元 ...

  9. Java中ArrayList和LinkedList区别、ArrayList和Vector的区别

    一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,Ar ...

随机推荐

  1. jQuery2.x源码解析(DOM操作篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) jQuery这个类库最为核心重要的功能就是DOM ...

  2. TCP报文中的SYN,FIN,ACK,PSH,RST,URG

    TCP的三次握手是怎么进行的:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发 ...

  3. 转]python 结巴分词(jieba)学习

    原文  http://www.gowhich.com/blog/147 主题 中文分词Python 源码下载的地址:https://github.com/fxsjy/jieba 演示地址:http:/ ...

  4. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  5. javascript构造函数以及原型对象的理解

    以下是一个构造函数的例子 如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的. //定义一个构造函数 function People(name,age){ this.name=name; ...

  6. iOS开发-OC语言 (三)字符串

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 24.0px "PingFang SC" } p ...

  7. python虚拟环境的使用

    一. 安装 sudo apt-get install python-virtualenv 二. 创建环境 sudo virtualenv Myenv 创建完全隔离的Python环境,实质是创建了一个文 ...

  8. IOS GCD使用实例大全

    GCD是大家在IOS开发过程中经常使用的一种多线程管理机制.原理这里就不多说了,大家关心的大部分都是它的使用,下面主要介绍GCD的主要方法及其实例. 1.认识主队列,感受串行队列的运行,运行结果打印的 ...

  9. github从上传代码到发布静态网站

    1.上传代码 第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令 git init 第二步:将项目的所有文件添加到仓库中 git add . 如果想添加某个特定的文件,只需把.换成特定 ...

  10. 关于C#继承运用的总结

    整体代码部分: 解决方案: 父类Person类: using System; using System.Collections.Generic; using System.Linq; using Sy ...