今天随便做了个测试,没有发现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);
  }

解决方案 »

  1.   

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

  2.   

    问题是在1千万数据的时候LinkedList直接报内存溢出!
      

  3.   

    add操作还真不能明显的看出来差距,你可以尝试下插入或删除,数据量稍微大点应该就能明显看出来LinkedList的性能在这方面比较好。
      

  4.   

    数组和链表的区别,数据结构看看,不用试就知道谁快了。ArrayList肯定get(i); 快
    LinkedList肯定add(i, obj) 快。 //i不是末尾 
      

  5.   

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

  6.   

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

  7.   


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