ArrayList和LinkedList插入删除效率的测试(完全不在一个数量级8/20)
通过index获取元素的值
java里面的链表可以添加索引,而C中的链表,是没有索引的
- package ArrayListVSLinkedList;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.LinkedList;
- ArrayList和LinkedList向后追加元素的性能比较
- /**
- * Created by IntelliJ IDEA.
- * User: luhba
- * Date: 17-8-10
- * Time: 下午7:06
- * To change this template use File | Settings | File Templates.
- */
- public class ArrayListVSLinkedList
- {
- public static void ArrayListTest(long num)
- {
- ArrayList list = new ArrayList() ;
- long berforeTime= new Date().getTime();
- for(int i=0;i<num;i++)
- {
- list.add(i,i);
- }
- long afterTime = new Date().getTime();
- System.err.println("The process ArrayListTest used a total time is "+(afterTime-berforeTime) +" millisecondes !" );
- }
- public static void linkedList(long num)
- {
- LinkedList list = new LinkedList();
- long berforeTime= new Date().getTime();
- for(int i=0;i<num;i++)
- {
- list.add(i,i);
- }
- long afterTime = new Date().getTime();
- System.err.println("The process linkedList used a total time is "+(afterTime-berforeTime) +" millisecondes !" );
- }
- public static void main(String[] args)
- {
- ArrayListVSLinkedList.ArrayListTest(100000);
- ArrayListVSLinkedList.linkedList(100000);
- }
- }
执行的结果是:
The process ArrayListTest used a total time is 31 millisecondes !
The process linkedList used a total time is 32 millisecondes !
这个是为什么呢?顺序存储插入的速度竟然比链式存储的还要快?
答:这个例子是顺序存储的最理想的方式,不用向后移动一个element,所以速度相当。那么再举一个差别最大
//数组和链表在头部插入数据的效率
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List; public class Hi{
public static void ArrayListTest(long num){
List list = new ArrayList() ;
long berforeTime= new Date().getTime();
for(int i=0;i<num;i++){ //在数组的头部插入一个元素
list.add(0,i);
}
long afterTime = new Date().getTime();
System.err.println("The process ArrayListTest used a total time is "+(afterTime-berforeTime) +" millisecondes !" ); long t1= new Date().getTime();
while(!list.isEmpty()){
while(!list.isEmpty()){
list.remove(0);
}
}
long t2 = new Date().getTime();
System.err.println("数组删除"+(t2-t1));
}
public static void linkedList(long num){
List list = new LinkedList();
long berforeTime= new Date().getTime();
for(int i=0;i<num;i++) {
list.add(0,i); /*添加元素:添加单个元素
如果不指定索引的话,元素将被添加到链表的最后*/
}
long afterTime = new Date().getTime();
System.err.println("The process linkedList used a total time is "+(afterTime-berforeTime) +" millisecondes !" ); long t1= new Date().getTime();
while(!list.isEmpty()){
list.remove(0);
}
long t2 = new Date().getTime();
System.err.println("链表删除"+(t2-t1));
}
public static void main(String[] args){
Hi.ArrayListTest(99999*5);
Hi.linkedList(99999*5);
}
}
ArrayList和LinkedList插入删除效率的测试(完全不在一个数量级8/20)的更多相关文章
- ArrayList 和 LinkedList的执行效率比较
一.概念: 一般我们都知道ArrayList* 由一个数组后推得到的 List.作为一个常规用途的对象容器使用,用于替换原先的 Vector.允许我们快速访问元素,但在从列表中部插入和删除元素时,速度 ...
- ArrayList 和linkedList 插入比较
从学Java开始, 就一直大脑记着 arrayList 底层是数组 ,查询快, 插入慢, 有移动的动作.linkedList 底层链表, 插入快 查询慢,今天写了例子跑了跑, 果然. public ...
- STL插入删除和查询测试
博客园的markdown不知道怎么插入C++代码,只好放弃了..本文在我的blog发布:http://jwk000.github.io/2015/09/02/20150902/
- java集合框架05——ArrayList和LinkedList的区别
前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容. List概括 先来回顾一下List在Collection中的的框架图 ...
- 面试题——ArrayList和LinkedList的区别
List概括 先回顾一下List在Collection的框架图: 从图中可以看出: List是一个接口,他继承Collection接口,代表有序的队列. AbstractList是一个抽象类, ,它继 ...
- 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
人物背景: 老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐.据说之前炒某币败光了所有家产,甚至现在还有欠债. 阿珍,女,本名陈家珍,刚 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)
主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析
最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转载)
原文地址: http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 原文地址: http://www.trinea.cn ...
随机推荐
- 12月8日 周五 image_tag.
Overview of helpers provided by Action View 6.1 AssetTagHelper:用于generate html语言 image_tag ,return a ...
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
- hdu-1892-二维BIT
See you~ Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Su ...
- EBS存储附件信息
附件三种形式 1.文件 2.url 3.文本 三种方式存储不一样 1.文件是存blob 2.url是存一个链接信息,读出来的时候,就是一个蓝色可点链接 fnd_attached_document ...
- svn出错:directory 'xxxx' is out of date
- sort中的比较函数compare
sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错: invalid use of non-static member function 因为:非静态成 ...
- 二维数组malloc
//WC[K][N] double **WC = (double**)malloc(sizeof(double*)*K); ; i < K; i++) { WC[i] = (double*)ma ...
- Excel中输入身份证后3位变成0,怎么办?
1.问题介绍: 1)问题: 在使用excel输入身份证号时,会发现直接输入数字后最后面的三位数字都变成0了,这可怎么办呢?
- sql 判断字符串中是否含有数字和字母
判断是否含有字母 select PATINDEX('%[A-Za-z]%', ‘ads23432’)=0 (如果存在字母,结果<>1) 判断是否含有数字 PATINDEX('%[0-9]% ...
- SQL Server 调优系列进阶篇 - 查询语句运行几个指标值监测
前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问 ...