1.流程图示例
Collection
map
2.详细说明:
2.1 单列集合(collection)
2.1.1 arrayList:
基本等同于Vector ,除了ArrayList是线程不安全的底层是数组(执行效率快),在多线程的情况下,不建议使用ArrayList,
为什么线程不安全呢?在ArrayList的内部方法中,没有加synchronized(线程互斥的关键字)修饰,如下代码:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
-
ArrayList中维护了一个Object类型的数组elementData.
transient Object[] elementData; //transient表示瞬间,短暂的,表示该属性不会被序列化
-
当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1次添加,则扩容elementDate为10,如需再次扩容,则扩容elementData为1.5倍源码解析:
- ArrayList aList = new ArrayList()时:
- aList扩容或者说是执行add()方法时
- 如果使用的是指定大小的构造器,则初始化elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍