网页特效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);
}
}