首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

聚合初探-认识List

2012-12-22 
集合初探--认识List1. ArrayListA) 底层数据结构·本质是一个Object数组,存放的是对象引用序列。size代表元

集合初探--认识List
1. ArrayList

A) 底层数据结构



·本质是一个Object数组,存放的是对象引用序列。size代表元素个数。
·采用数组并通过算法保证了集合元素有序,允许重复的特性。

B) 构造方法




·底层采用双向循环链表结构实现。
·header:双向链表的头;Entry:包含三部分--对象数据,指向后一个Entry的引用,指向前一个Entry的引用。

B)构造方法

private void ensureCapacityHelper(int minCapacity) {    int oldCapacity = elementData.length;    if (minCapacity > oldCapacity) {        Object[] oldData = elementData;        int newCapacity = (capacityIncrement > 0) ? (oldCapacity + capacityIncrement) : (oldCapacity * 2);        if (newCapacity < minCapacity) {            newCapacity = minCapacity;        }        elementData = Arrays.copyOf(elementData, newCapacity);    }} 

    ·通过capacityIncrement控制:如果capacityIncrement>0,每次增加capacityIncrement。否则扩大为原来的两倍。

4.Stack

·后进先出:LIFO;入栈:push(E);出栈:pop(),返回最后一个元素并删除元素;peek(),返回最后一个元素但不删除。
·继承Vector,线程安全的,这使得stack也变得重量级。
·stack的父类不应该为Vector的,因为Vector的底层是数组(增删效率比较低),且Vector有get方法(意味着它可能访问到并不属于最后一个位置元素的其他元素,很不安全)。
·不考虑并发,怎么实现Stack的功能?封装LinkedList也许是不错的选择。

热点排行