通过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. 雷林鹏分享:C# 异常处理

    C# 异常处理 异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零. 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式.C# 异常处理时建立 ...

  2. English trip -- VC(情景课) 7 B Clothing 服装

    xu言: 不要使用中式的思维去思考西方的语义!!!切记切记 words a tie   领带 a blouse  女士衬衣 a sweater  毛衣 a skirt  短裙 a jacket   夹 ...

  3. 弗洛伊德算法(Floyd算法)

    原博来自http://www.cnblogs.com/skywang12345/ 弗洛伊德算法介绍 和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的 ...

  4. UVA-10026 Shoemaker's Problem (贪心)

    题目大意:一个鞋匠,有n只鞋要修,修某只鞋的时间ti已知,某只鞋晚修一天要交的罚款fi也已知.现在让找个修鞋顺序使得罚款最少. 题目分析:本来想水一下这道题,没想到真的AC啦.后来又查的题解,找的解释 ...

  5. failed to load response data

    当需要根据后台传回地址跳转页面时 即使使用preserve log 可以查看上一个页面获取地址请求,但是此时请求返回值为failed to load response data 当关闭页面跳转可以查看 ...

  6. PL/SQL 中 dbms_output.put_line 输出字符长度限制的问题

    可以使用dbms_out.enable()函数来设定允许的长度. PL/SQL 中 dbms_output.put_line 输出字符长度限制的问题

  7. CentOS7系统更换YUM Repo源

    CentOS7系统更换YUM Repo源 备份原镜像 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.re ...

  8. eclipse设置条件断点

    1. 在Breakpoints页面,选中断点然后右键,选择"Breakpoint Properties" 2. 勾选Conditional,并输入条件.这样,当name等于&quo ...

  9. shell批量杀进程

    ps aux |grep java |grep -v 'grep java'|awk {'print $2'}|xargs kill -9 ps aux |grep java 查询包含‘java’的进 ...

  10. js判断数组,对象是否存在某一未知元素

    1.对象 var obj = { aa:'1111', bb:'2222', cc: '3333' }; var str='aa'; if(str in obj){ console.log(obj[s ...