当前位置:编程学习 > JAVA >>

小弟在线求解释。。。。



package com.nfjd.test2;
import java.util.LinkedList;
import java.util.List;
public class Test2 {
private static List<String>list=null;


static {
list = new LinkedList<String>();
//list = new ArrayList<String>();
for (int i = 0; i < 9000000; i++) {
list.add(i + "");
}
System.out.println("init param over!");
}

public static void main(String[] args) {
long start=System.currentTimeMillis();
        for(int i=0;i<1603696;i++){
         list.add(i+"");
        }
        System.out.println((System.currentTimeMillis()-start)/1000);
}

}



  虽然linkedlist使用链表的方式使得LinkedList添加、删除元素速度较快,但是在以上实验中证明LinkedList移除元素的确比Arraylist但是添加元素要比ArrayList慢的多,这是为什么呢,求解释! --------------------编程问答-------------------- LinkedList使用链表,插入数据 应该是比 ArrayList快,应该arrayList底层是用数组实现的,插入数组肯定要新建 位置移动 , 你多测试几遍吧 --------------------编程问答-------------------- 感觉跟分配的系统内存有关
又或者说
ArrayList添加数据后指针固定在当前
而LinkedList添加数据后指针回到起始位置

以上纯属个人理解 --------------------编程问答-------------------- 呃 
感觉自己有些说反了呢。。。 --------------------编程问答--------------------

ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 
--------------------编程问答-------------------- 你这种方式,Arraylist一个循环遍历,等于是对数组进行操作,那当然快,LinkedList怎么能比得过数组的遍历?
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,