A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 依然超级赛亚人 于 2014-8-21 19:15 编辑

这两天在论坛的“阳哥专栏”里领了几道题做,其中有一道关于ArrayList和LinkedList添加以及删除操作的速度比较问题真是颠覆了我的认知。记得学的是ArrayList添加和删除都比LinkedList慢,可是我写了下面这段程序测试,结果却出人意料,和预想正好一个相反的结果。我也知道那两三个技术分不是这么轻易就能得到的,但是我确实搞不懂这里的原理了。现在不求能提交问题得分之类的了,只求能搞个明白。考虑到论坛里可能好多人已经做过该问题,对于他们已经不是什么问题了,所以我真担心该贴被视为故意灌水.......不过,我想对于后来的人,可能不少也有我这样的疑惑,所以斗胆拿出来问问,同时能让像我这样情况的人一起了解一下,希望明鉴。

  1. /*
  2. 通过编码分别测试ArrayList 和 LinkedList 添加、删除对象时的耗时情况(精确到纳秒),
  3. 并总结出以上两种集合的数据结构的不同之处。
  4. */
  5. import java.util.*;
  6. class  ListTest00
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                
  11.                   //先测试ArrayList添加,删除操作的耗时情况。
  12.                 ArrayList<String> array = new ArrayList<String>();
  13.                 long begin = System.nanoTime();//标记起始时间
  14.                 array.add("javaEE01");
  15.                 array.add("javaEE02");
  16.                 array.add(1,"javaEE03");//插入元素,其他均为添加元素
  17.                 array.add("javaEE04");
  18.                 array.add("javaEE05");
  19.                 long end = System.nanoTime();//标记终止时间
  20.                 System.out.println("ArrayList集合添加操作耗时为:"+(end-begin)+"纳秒");

  21.                 long begin1 = System.nanoTime();
  22.                 array.clear();//删除操作。
  23.                 long end1 = System.nanoTime();
  24.                 System.out.println("ArrayList集合删除操作耗时为:"+(end1-begin1)+"纳秒");
复制代码


1 个回复

正序浏览
帖子一天多了没人回复...是大家也不知道怎么解决吗?还是不屑与回答这样的问题?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马