集合框架(源码)

来源:互联网 发布:云计算产业孵化器 编辑:程序博客网 时间:2024/06/15 23:32

Map:HashMap  HashTable  LinkedHashMap  TreeMap

List: ArrayList   LinkedList  Vector

Set:HashSet  LinkedHashSet  TreeSet


Map接口



List接口:

ArrayList

一 用transient Object[] elementData来存储元素

1 为什么用transient来存储元素:

(1)ArrayList中有一个扩容因子,如果用11个元素的话,这个elementData中会有15个元素(newSize = oldSize + oldSize << 1),size虽然还是11,但是elementData中的有15个元素,4个为null的空元素。这样持久化就会造成不必要的开销。

(2)在ArrayList中有readObject和writeObject,用size来判断,不会造成持久化多余的空的元素。


二 Iterator()方法

1 ArrayList用了一个内部类Itr implements Iterator

2 hashNext() 中判断   cursor != size  

3 next返回element(cursor) ,然后cursor++


LinkedList

与ArrayList区别在于,用链表来存储元素(方便增删)

vector

也是用数组来存储,只不过在增删改取出元素的方法上加了synchronized关键字



Set接口

HashSet

    用HashMap来存储元素(所以)

TreeSet

原创粉丝点击