集合
集合:对象的容器
相比数组:长度不固定
数组可以存放基本类型和引用类型,集合只能存放引用类型
collection体系
迭代器
专门用来遍历集合的一种方式
hasNext(); 有下一个元素则返回true,否则false
next(); 获取下一个元素
remove();删除元素
List
ArrayList
存储结构:数组
DEFAULT_CAPACITY = 10:默认容量(如果没有添加元素,则为0;每次扩容1.5倍)
elementData:存放元素的数组
size:实际元素个数
Vector
存储结构:数组
LinkedList
存储结构:双向链表
泛型
提高代码重用性:一个方法可以传递不同类型的参数,可以不需要重写
防止类型转换异常:强制集合类型一致,访问时不必类型转换(拆箱),不存在多态
Set
HashSet
存储结构:哈希表(数组+链表+红黑树)
存储过程:(1)根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空执行第二步
(2)执行equals方法,如果equals方法为true,则认为重复,否则形成链表
TreeSet
存储结构:红黑树
TreeSet的add实际就是用TreeMap的key来存储
HashSet同理
Map
HashMap
存储结构:哈希表
(1)初始容量 16 ,加载因子0.75(数据容量超过75%时进行扩容),每次增加翻倍
(2)HashMap刚创建时,table(数组)为null,以节省空间,当添加第一个元素,table容量调整为16
(3)当链表长度大于8,且元素个数大于等于64时,会调整为红黑树以提高执行效率
(4)当链表长度小于6,调整成链表
(5)JDK1.8后 链表是尾插入
TreeMap
存储结构:红黑树
Collections
集合工具类,定义了除存取以外的集合常用 方法
Properties