不说废话,直接看代码:

 /**
* @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. <meta>标签的作用

    <META> 是放于 <HEAD> 与 </HEAD>之间的标记,功用与变化等对,所以我公式化地介绍. <meta name="Descriptio ...

  2. .Net程序员学用Oracle系列(8):触发器、任务、序列、连接

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ...

  3. pb_ds(平板电视)整理

    有人说BZOJ3040用普通的<queue>中priority_queue搞dijkstra过不了. 我只想说你们的djk可能写的太丑了. 先上代码 #include<iostrea ...

  4. java基础练习 4

    import java.util.Scanner; public class Forth { public static void main(String[] args){ /*请输入星期几的第一个字 ...

  5. CHM木马

    一. 弹出计算器 打开EasyCHM,工具 -> 反编译指定的CHM,选择目标文件和反编译工作目录. 进入反编译的工作目录,找到并编辑主页文件,这里是index.html 在<body&g ...

  6. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...

  7. [DP之树形DP]

    树形dp出了应该还是比计数dp要简单的 因为很好可以看出来 常用的是一个F记录子树内的 一个G记录子树外的 还有一种就是有环的做过要用状压搞一下 不说这么多直接上例题 [HAOI2015]T1 经典的 ...

  8. const 那点事儿

    修饰变量时 const char 与 char const 是等价的,例如 const char a = 'a'; char const a = 'a'; 表示变量a不能再被赋予其他值. 到指针时情况 ...

  9. Openjudge-NOI题库-旅行-数论

    题目描述 Description 转眼毕业了,曾经朝夕相处的同学们不得不都各奔东西,大家都去了不同的城市开始新的生活.在各自城市居住了一段时间后,他们都感到了一些厌倦,想去看看其他人的生活究竟如何,于 ...

  10. Scala 控制结构

    Scala内建的控制结构屈指可数,仅有if, while, for, match, try和函数调用而已. 几乎所有的Scala控制结构都会产生某个值(while和 do while虽然不能产生有意义 ...