網頁特效phttp://www.111cn.net/網頁特效p.html target=_blank >jsp教程 arraylist和linkedlist的區別及arraylist的特點
arraylist)
private transient object[] elementdata;
//………………………………………………………………………………
(linkedlist)
private transient entry<e> header = new entry<e>(null, null, null);/鏈表頭
//內部鏈表類.
private static class entry<e> {
e element; //資料元素
entry<e> next; // 前驅
entry<e> previous;//後驅
entry(e element, entry<e> next, entry<e> previous) {
this.element = element;
this.next = next;
this.previous = previous;
}
}
/*
毫無疑問,第一點就是兩者的內部資料結構不同, arraylist內部元素容器是一個object的數組,
而linkedlist內部實際上一個鏈表的資料結構,其有一個內部類來表示鏈表.
兩者的父類不同,也就決定了兩者的儲存形式不同。 arraylist繼承於 abstractlist,而linkedlist繼承於abstractsequentiallist. 兩者都實現了list的骨乾結構,只是前者的訪問形式趨向於 "隨機訪問"資料存放區(如數組),後者趨向於 "連續訪問"資料存放區(如連結清單)
*/
public class arraylist<e> extends abstractlist<e>
public class linkedlist<e> extends abstractsequentiallist<e>
/*
再有就是兩者的效率問題, 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);
}
}