通过index获取元素的值

java里面的链表可以添加索引,而C中的链表,是没有索引的






  1. package ArrayListVSLinkedList;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.LinkedList;
  5.   ArrayList和LinkedList向后追加元素的性能比较
  6. /**
  7. * Created by IntelliJ IDEA.
  8. * User: luhba
  9. * Date: 17-8-10
  10. * Time: 下午7:06
  11. * To change this template use File | Settings | File Templates.
  12. */
  13. public class ArrayListVSLinkedList
  14. {
  15. public static void ArrayListTest(long num)
  16. {
  17. ArrayList list = new ArrayList()  ;
  18. long berforeTime= new Date().getTime();
  19. for(int i=0;i<num;i++)
  20. {
  21. list.add(i,i);
  22. }
  23. long afterTime = new Date().getTime();
  24. System.err.println("The process ArrayListTest used a total time is "+(afterTime-berforeTime) +" millisecondes !" );
  25. }
  26. public static void linkedList(long num)
  27. {
  28. LinkedList  list = new LinkedList();
  29. long berforeTime= new Date().getTime();
  30. for(int i=0;i<num;i++)
  31. {
  32. list.add(i,i);
  33. }
  34. long afterTime = new Date().getTime();
  35. System.err.println("The process linkedList used a total time is "+(afterTime-berforeTime) +" millisecondes !" );
  36. }
  37. public static void main(String[] args)
  38. {
  39. ArrayListVSLinkedList.ArrayListTest(100000);
  40. ArrayListVSLinkedList.linkedList(100000);
  41. }
  42. }

执行的结果是: 
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)的更多相关文章

  1. ArrayList 和 LinkedList的执行效率比较

    一.概念: 一般我们都知道ArrayList* 由一个数组后推得到的 List.作为一个常规用途的对象容器使用,用于替换原先的 Vector.允许我们快速访问元素,但在从列表中部插入和删除元素时,速度 ...

  2. ArrayList 和linkedList 插入比较

    从学Java开始, 就一直大脑记着  arrayList 底层是数组 ,查询快, 插入慢, 有移动的动作.linkedList 底层链表, 插入快 查询慢,今天写了例子跑了跑, 果然. public ...

  3. STL插入删除和查询测试

    博客园的markdown不知道怎么插入C++代码,只好放弃了..本文在我的blog发布:http://jwk000.github.io/2015/09/02/20150902/

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

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

  5. 面试题——ArrayList和LinkedList的区别

    List概括 先回顾一下List在Collection的框架图: 从图中可以看出: List是一个接口,他继承Collection接口,代表有序的队列. AbstractList是一个抽象类, ,它继 ...

  6. 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?

    人物背景: 老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐.据说之前炒某币败光了所有家产,甚至现在还有欠债. 阿珍,女,本名陈家珍,刚 ...

  7. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  8. ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...

  9. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转载)

    原文地址: http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 原文地址: http://www.trinea.cn ...

随机推荐

  1. 雷林鹏分享:Ruby 字符串(String)

    Ruby 字符串(String) Ruby 中的 String 对象存储并操作一个或多个字节的任意序列,通常表示那些代表人类语言的字符. 最简单的字符串是括在单引号(单引号字符)内.在引号标记内的文本 ...

  2. 20170728xlVba SSC_LastTwoDays

    Public Sub SSCLastTwoDays() Dim strText As String Dim Reg As Object, Mh As Object, OneMh As Object D ...

  3. android--------阿里 AndFix 热修复

    AndFix,全称是Android hot-fix.是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug. 支持Android 2.3 到 6.0,并且支持arm 与 X86 ...

  4. splay板子

    1, splay的一些基本操作. 使用前要插入$-INF,+INF$保证每个点的前驱后继存在. $get$函数在$x$存在时, 调用后, 根为$x$, 否则根为$x$的前驱或后继 const int ...

  5. Kubernetes设计架构

    官方文档:https://www.kubernetes.org.cn/doc-11 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc), ...

  6. BZOJ1300 [LLH邀请赛]大数计算器

    一开始以为暴力搞,后来看了数据范围还以为要FFT,各种被虐,然后Orz Seter大神!!! 我只想到了前三位:a * b <=> 10^(log(a) + log(b)),于是把乘的数都 ...

  7. operator diag-up setting

  8. sgu 121. Bridges painting 列举情况 难度:1

    121. Bridges painting time limit per test: 0.25 sec. memory limit per test: 4096 KB New Berland cons ...

  9. kettle 发邮件带附件

    新建一个job,主要用到的组件有两个,如下图: 首先点击下图的文件,选择你要做为邮件附件的文件.选完后会在前辈的文件.目录中显示.然后点击增加,会下面文件列表中显示已经添加的文件(涂黄色的部分) 按下 ...

  10. DevExpress DateEdit 5 常见问题解决方法

    1. 如何设置选择的日期大于当天? dateEdit1.Properties.MinValue = DateTime.Now.AddDays(1) 2. 如何做到只显示年.月? var formatS ...