java中的集合时用于存储对象的工具类容器,它实现了常用的数据结构,提供了一系列公开的方法用于增加, 删除, 修改, 查找和遍历数据, 降低了日常开发成本.
集合的种类非常多, 形成了一个比较经典的继承关系树, 称为Java 集合框架图, 如图所示:
框架图中主要分为两类: 第一类是按照单个元素存储的Collection,在继承树中Set 和List 都实现了 Collection 接口; 第二类就是按照Key-Value 存储的Map .
在集合框架中, 红色代表接口, 蓝色代表抽象类,绿色代表并发包中的类, 灰色代表早期线程安全的类(基本已经弃用). 可以看到, 与Collection 相关的4条线分别是List , Queue, Set, Map, 他们的子类会映射到数据结构中的表, 树, 哈希等.
List集合
List集合时线性数据结构的主要实现, 集合元素通常存在明确的上一个和下一个元素, 也存在明确的第一个元素和最后一个元素. List集合的遍历结果是稳定的. 该体系最常用的是 ArrayList 和LinkedList 两个集合类.
ArrayList 是容量可以改变的非线程安全集合, 内部实现使用数组进行存储, 集合扩容时会创建更大的数组空间, 把原有数据复制到新数组中, ArrayList 支持对元素的快速随机访问, 但是插入与删除时速度通常很慢, 因为这个过程很有可能需要移动其他元素.
Linked