楼主: iamczr

[原创] 做插入时,ArrayList居然比LinkedList快

[复制链接]
论坛徽章:
350
2006年度最佳版主
日期:2007-01-24 12:56:49NBA大富翁
日期:2008-04-21 22:57:29地主之星
日期:2008-11-17 19:37:352008年度最佳版主
日期:2009-03-26 09:33:53股神
日期:2009-04-01 10:05:56NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA季后赛大富翁
日期:2009-06-16 11:48:01ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05
11#
发表于 2008-12-16 22:38 | 只看该作者
原帖由 justforregister 于 2008-12-16 22:32 发表

天虎也这么崇洋媚外?

公司每年都请SUN的工程师来做技术交流!

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
12#
发表于 2008-12-16 23:16 | 只看该作者
那帮忙解释解释4楼的问题吧,高手

使用道具 举报

回复
论坛徽章:
127
Heart of PUB
日期:2008-01-02 14:43:06问答徽章
日期:2013-10-16 18:19:34Jeep
日期:2014-02-17 05:11:352014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14阿斯顿马丁
日期:2013-09-08 00:03:55
13#
发表于 2008-12-17 10:06 | 只看该作者
原帖由 justforregister 于 2008-12-16 17:58 发表

呵呵, 你run run代码在说吧


强烈支持你这种有技术性的BS天虎!


的确跑过后要把那个REMOVE去了才快!

使用道具 举报

回复
论坛徽章:
5
八级虎吧徽章
日期:2008-12-08 16:10:57NBA季后赛纪念徽章
日期:2009-06-16 11:28:17
14#
发表于 2008-12-17 13:48 | 只看该作者
java的链表设计是不是不一样?

高手解答一下

使用道具 举报

回复
论坛徽章:
43
ITPUB元老
日期:2007-01-14 09:32:112011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08开发板块每日发贴之星
日期:2011-08-29 01:01:012012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
15#
发表于 2008-12-18 01:08 | 只看该作者
代码有一定迷惑性,不如把各项指标拆开来进行单项比较,代码修改如下:

  1. import java.util.ArrayList;
  2. import java.util.LinkedList;
  3. import java.util.List;

  4. public class TestArrayList {

  5.         @SuppressWarnings("unchecked")
  6.         public static void main(String[] args) {
  7.                 test(new ArrayList());
  8.                 test(new LinkedList());
  9.         }

  10.         @SuppressWarnings("unchecked")
  11.         public static void test(List list) {
  12.                 System.out.println(list.getClass().getName());

  13.                 System.out.print("simpleadd\tsize: " + list.size());
  14.                 Long l = System.currentTimeMillis();
  15.                 for (int i = 0; i < 10000; i++) {
  16.                         list.add("a" + i);
  17.                 }
  18.                 Long ll = System.currentTimeMillis();
  19.                 System.out.println(" ----> " + list.size());
  20.                 System.out.println("time elasped " + (ll - l));

  21.                 System.out.print("middleadd\tsize: " + list.size());
  22.                 l = System.currentTimeMillis();
  23.                 for (int j = 500; j < 5500; j++) {
  24.                         list.add(j, "test" + j);
  25.                 }
  26.                 ll = System.currentTimeMillis();
  27.                 System.out.println(" ----> " + list.size());
  28.                 System.out.println("time elasped " + (ll - l));

  29.                 System.out.print("simpleremove\tsize: " + list.size());
  30.                 l = System.currentTimeMillis();
  31.                 for (int j = 500; j < 5500; j++) {
  32.                         list.remove(0);
  33.                 }
  34.                 ll = System.currentTimeMillis();
  35.                 System.out.println(" ----> " + list.size());
  36.                 System.out.println("time elasped " + (ll - l));
  37.                
  38.                 System.out.print("middleremove\tsize: " + list.size());
  39.                 l = System.currentTimeMillis();
  40.                 for (int j = 500; j < 5500; j++) {
  41.                         list.remove(j - 500);
  42.                 }
  43.                 ll = System.currentTimeMillis();
  44.                 System.out.println(" ----> " + list.size());
  45.                 System.out.println("time elasped " + (ll - l));
  46.         }

  47. }
复制代码

使用道具 举报

回复
论坛徽章:
43
ITPUB元老
日期:2007-01-14 09:32:112011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08开发板块每日发贴之星
日期:2011-08-29 01:01:012012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
16#
发表于 2008-12-18 01:11 | 只看该作者
java.util.ArrayList
simpleadd        size: 0 ----> 10000
time elasped 31
middleadd        size: 10000 ----> 15000
time elasped 94
simpleremove        size: 15000 ----> 10000
time elasped 63
middleremove        size: 10000 ----> 5000
time elasped 16

java.util.LinkedList
simpleadd        size: 0 ----> 10000
time elasped 0
middleadd        size: 10000 ----> 15000
time elasped 156
simpleremove        size: 15000 ----> 10000
time elasped 0
middleremove        size: 10000 ----> 5000
time elasped 47

这样就可以比较容易看出各自的优劣了

使用道具 举报

回复
论坛徽章:
43
ITPUB元老
日期:2007-01-14 09:32:112011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08开发板块每日发贴之星
日期:2011-08-29 01:01:012012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
17#
发表于 2008-12-18 01:17 | 只看该作者
可以看出,确实如SkyTiger所说,其实也是如我们大家所熟知的,ArrayList在随机寻址的添加和删除上速度较快,而LinkedList在队列头部的添加和删除较快。

使用道具 举报

回复
论坛徽章:
43
ITPUB元老
日期:2007-01-14 09:32:112011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08开发板块每日发贴之星
日期:2011-08-29 01:01:012012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
18#
发表于 2008-12-18 01:21 | 只看该作者
原帖由 justforregister 于 2008-12-16 09:22 发表
但是你把这句屏蔽掉al.remove(j-50);
run arraylist的时候,半天都没结果
linkedlist 10秒可以出结果



去了remove,等于需要添加5000*100条记录,jvm忙着给ArrayList分配内存了,呵呵

使用道具 举报

回复
论坛徽章:
127
Heart of PUB
日期:2008-01-02 14:43:06问答徽章
日期:2013-10-16 18:19:34Jeep
日期:2014-02-17 05:11:352014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14阿斯顿马丁
日期:2013-09-08 00:03:55
19#
发表于 2008-12-18 09:12 | 只看该作者
楼上的认真,强烈支持。


BS天虎!

使用道具 举报

回复
论坛徽章:
350
2006年度最佳版主
日期:2007-01-24 12:56:49NBA大富翁
日期:2008-04-21 22:57:29地主之星
日期:2008-11-17 19:37:352008年度最佳版主
日期:2009-03-26 09:33:53股神
日期:2009-04-01 10:05:56NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA季后赛大富翁
日期:2009-06-16 11:48:01ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05
20#
发表于 2008-12-18 09:54 | 只看该作者
SUN的工程师都是JDK设计和开发者,他们的总结一般都是准确的!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表