Arraylist源码分析:
DEFAULT_CAPACITY 默认容量
Em数组为空
elementData 存放元素的数组
size 实际元素个数
无参构造 如果没有向集合添加任何元素,默认容量为0;
add方法:添加元素:源码—修改容量size+1,添加一个元素之后为10,扩容之后为1.5倍。
LinkedList:双向链表
add添加,remove删除
判断是否存在:contains(),是否为空isEmpty()
获取元素位置:indexOf()
源码分析:first头结点,last指向最后一个结点
Map集合:HashMap:无序,键值对,键不可以重复,值可以重复
Map<String,String>,keySet ,entrySet
判断是否存在:containskey
源码分析:实现map接口,常量默认初始容量大小
红黑树:提高执行效率,链表长度大于8,数组长度大于64为红黑树,小于6变回链表
创建hashmap之后,未添加元素的时候table=null,size=0;添加第一个元素大小变成16,超过了12就32
Jdk1.8以前是头插入(新的元素占据原来元素的位置),之后是尾插入(新的元素直接连接元素后面)
目的是为了节省空间
Put:放数据,传key,values