Java中ArrayList和LinkedList性能的比较(结果总是怪怪的,如果有不当还请指出)。
不说废话,直接看代码:
/**
* @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性能的比较(结果总是怪怪的,如果有不当还请指出)。的更多相关文章
- Java中arraylist和linkedlist源代码分析与性能比較
Java中arraylist和linkedlist源代码分析与性能比較 1,简单介绍 在java开发中比較经常使用的数据结构是arraylist和linkedlist,本文主要从源代码角度分析arra ...
- Java中ArrayList与LinkedList的区别
Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...
- java中ArrayList 和 LinkedList 有什么区别
转: java中ArrayList 和 LinkedList 有什么区别 ArrayList和LinkedList都实现了List接口,有以下的不同点:1.ArrayList是基于索引的数据接口,它的 ...
- Java中ArrayList和LinkedList的性能分析
ArrayList和LinkedList是Java集合框架中经常使用的类.如果你只知道从基本性能比较ArrayList和LinkedList,那么请仔细阅读这篇文章. ArrayList应该在需要更多 ...
- Java中ArrayList和LinkedList差别
一般大家都知道ArrayList和LinkedList的大致差别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机訪问get和set.A ...
- Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问 ...
- JAVA中ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题
近期在做一个对接京东的电商平台,所以对各个地方的效率考虑的比较多,今天深挖了一下ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题,首先说一下两种 ...
- Java中ArrayList和LinkedList的异同
一:ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,ArrayList实现了长度可变的数组,在内存中分配连续的空间.遍历元素和随机访问元 ...
- Java中ArrayList和LinkedList区别、ArrayList和Vector的区别
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,Ar ...
随机推荐
- JSP引擎的工作原理
JSP运行环境: 执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat.把这些支持JSP的web服务器配置好后.就可以再客户端通过浏览器来访问JSP页面了.默认端 ...
- Javascript设计模式之装饰者模式详解篇
一.前言: 装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象. 装饰者模式的特点: 1. 在不改 ...
- 关于jquery 1.9以上多次点击checkbox无法选择的
在jquery1.9之前,我们对于一个checkbox对象来进行重复选择或者取消, 我们可以使用这个方法$().attr('checked',checked);//选中 $().removeAttr( ...
- SQL sever 创建定时执行任务
在SQL的使用过程中,我们经常要做些数据备份以及定时执行的任务. 这些任务能够帮助我们简化工作过程. 下面我们了解下如何创建一个定时执行的存储过程. 首先我们要打开 SQL server 代理服务 选 ...
- idea svn 更新覆盖了本地代码
idea 更新svn代码,覆盖了本地代码,还不能ctr+z怎么办? 下图
- C# typeof() 和 GetType()区别
1.typeof(x)中的x,必须是具体的类名.类型名称等,不可以是变量名称. 2.GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof() ...
- [转]numpy线性代数基础 - Python和MATLAB矩阵处理的不同
转自:http://blog.csdn.net/pipisorry/article/details/45563695 http://blog.csdn.net/pipisorry/article/de ...
- C# 三角形外心和外接圆半径计算方法
在网上找了好久,想找一个现成的方法来用,折腾半天发现没有一个好用的,最后迫不得已自己写了一个,需要的同学可以直接拿去用, private void GetTriangleExcenterRadius( ...
- Linux的一些简单命令(三)
1.解压缩算法:使用gzip算法进行解压缩, 压缩语法:gzip filename 解压语法:gzip -dv filename 2.解压缩算法:使用bzip2算法进行解压缩, 压缩语法:bz ...
- 两种画线算法(DDA&Bersenham)
DDA(digital differential analyzer) 由直线的斜截式方程引入 对于正斜率的线段,如果斜率<=1,则以单位x间隔(δx=1)取样,并逐个计算每一个y值 Yk+1 = ...