添加和删除数据没有发现LinkedList比ArrayList快

venus224 2012-09-02 11:23:27
今天随便做了个测试,没有发现LinkedList在添加没有比ArrayList快多少,而且当我们循环数据加到1千万以上时还会出现内存不够用的情况!难道是我的测试有问题,希望大家发表各自的看法!谢谢!

  public static void main(String []args){
ArrayList arr = new ArrayList();
LinkedList link = new LinkedList();
long arrAddStrat = System.currentTimeMillis();
for(int i=0;i<10000;i++){
arr.add(i);
}
System.out.println("arr添加用时===========");
System.out.println(System.currentTimeMillis()-arrAddStrat);
long linkAddStart = System.currentTimeMillis();
for(int i=0;i<10000;i++){
link.add(i);
}
System.out.println("linked添加用时===========");
System.out.println(System.currentTimeMillis()-linkAddStart);

long arrOutStart = System.currentTimeMillis();
for(int i=0,size=arr.size();i<size;i++){
arr.get(i);
}
System.out.println("arr输出用时");
System.out.println(System.currentTimeMillis()-arrOutStart);

long linkOutStart = System.currentTimeMillis();
for(int i=0,size=link.size();i<size;i++){
link.get(i);
}
System.out.println("link输出用时");
System.out.println(System.currentTimeMillis()-linkOutStart);
}

...全文
269 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
balabala_sean 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 4 楼 的回复:

数组和链表的区别,数据结构看看,不用试就知道谁快了。

ArrayList肯定get(i); 快
LinkedList肯定add(i, obj) 快。 //i不是末尾

问题是在1千万数据的时候LinkedList直接报内存溢出,arrayList不会,这个怎么回事?
[/Quote]

链表式的LinkedList内部是类似于指针这样的对象来保持连接的 就比如 a→b a,b是对象,→也是对象
所以会出现这样的错误。

可以多读读jdk源码。
venus224 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

一个随机存储块一个添加删除容易没有可比性的
[/Quote]
问题是在1千万数据的时候LinkedList直接报内存溢出,arrayList不会,这个怎么回事?
venus224 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

数组和链表的区别,数据结构看看,不用试就知道谁快了。

ArrayList肯定get(i); 快
LinkedList肯定add(i, obj) 快。 //i不是末尾
[/Quote]
问题是在1千万数据的时候LinkedList直接报内存溢出,arrayList不会,这个怎么回事?
  • 打赏
  • 举报
回复
不是你这么比较的 这两种容器比较方式应该结合 具体的情况 具体选择
grl3838567 2012-09-02
  • 打赏
  • 举报
回复
add操作还真不能明显的看出来差距,你可以尝试下插入或删除,数据量稍微大点应该就能明显看出来LinkedList的性能在这方面比较好。
venus224 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

存放的对象是 integer 类型的,换个对象试试,比如User对象!
[/Quote]
问题是在1千万数据的时候LinkedList直接报内存溢出!
ZhouXunYou 2012-09-02
  • 打赏
  • 举报
回复
存放的对象是 integer 类型的,换个对象试试,比如User对象!
zqfddqr 2012-09-02
  • 打赏
  • 举报
回复
一个随机存储块一个添加删除容易没有可比性的
ygyz03 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

存放的对象是 integer 类型的,换个对象试试,比如User对象!

问题是在1千万数据的时候LinkedList直接报内存溢出!
[/Quote]那你循环次数少点。
scbb 2012-09-02
  • 打赏
  • 举报
回复
数组和链表的区别,数据结构看看,不用试就知道谁快了。

ArrayList肯定get(i); 快
LinkedList肯定add(i, obj) 快。 //i不是末尾

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧