【www.gdgbn.com--js教程】

网页特效p/网页特效p.html target=_blank >jsp教程 arraylist和linkedlist的区别及arraylist的特点

arraylist)  
private transient object[] elementdata;   


 
//………………………………………………………………………………   
 

(linkedlist)  
private transient entry header = new entry(null, null, null);/链表头   


 
//内部链表类.  

private static class entry {  
    e element; //数据元素  
    entry next; // 前驱  
    entry previous;//后驱  
    entry(e element, entry next, entry previous) {  
        this.element = element;  
        this.next = next;  
        this.previous = previous;  
    }  
}   

 
/*
毫无疑问,第一点就是两者的内部数据结构不同, arraylist内部元素容器是一个object的数组,
 而linkedlist内部实际上一个链表的数据结构,其有一个内部类来表示链表.
 两者的父类不同,也就决定了两者的存储形式不同。 arraylist继承于 abstractlist,而linkedlist继承于abstractsequentiallist. 两者都实现了list的骨干结构,只是前者的访问形式趋向于 "随机访问"数据存储(如数组),后者趋向于 "连续访问"数据存储(如链接列表)

*/

public class arraylist extends abstractlist 
public class linkedlist extends abstractsequentiallist 


/*
再有就是两者的效率问题, arraylist基于数组实现,所以毫无疑问可以直接用下标来索引,其索引数据快,插入元素设计到数组元素移动,或者数组扩充,所以插入元素要慢。linkedlist基于链表结构,插入元素只需要改变插入元素的前后项的指向即可,故插入数据要快,而索引元素需要向前向后遍历,所以索引元素要慢。
*/

public void ensurecapacity(int mincapacity) {  
        modcount++;  
        int oldcapacity = elementdata.length;  
        if (mincapacity > oldcapacity) {  
            object olddata[] = elementdata;  
             //这里扩充的大小为原大小的大概 60%  
            int newcapacity = (oldcapacity * 3) / 2 + 1;  
            if (newcapacity < mincapacity)  
                newcapacity = mincapacity;  
            //创建一个指定大小的新数组来覆盖原数组  
            elementdata = arrays.copyof(elementdata, newcapacity);  
        }  
    }   

本文来源:http://www.gdgbn.com/wangyezhizuo/25560/