集合.png
- 外框为虚线的表示接口,边框为实线的表示类
- 箭头为虚线的表示实现类接口,箭头为实线的表示继承了类
两大常用集合类
- List: 使用最多的有序集合,提供方便的新增、修改、删除操作
- Set:集合不允许有重复的元素
集合使用
- Vector
- java 早期提供的线程安全的有序集合
- ArrayList
- ArrayList 是最常见的非线程安全的有序集合,因为内部是数组存储的,所以随机访问效率很高,但非尾部的插入和删除性能较低,如果在中间插入元素,之后的所有元素都要后移。
- LinkedList
- LinkedList 是使用双向链表数据结构实现的,因此增加和删除效率比较高,而随机访问效率较差。
- HashSet
- HashSet 是一个没有重复元素的集合。虽然它是 Set 集合的子类,实际却为 HashMap 的实例.
- HashSet 默认容量为 16,每次扩充 0.75 倍
- TreeSet
- TreeSet 集合实现了自动排序,也就是说 TreeSet 会把你插入数据进行自动排序
- LinkedHashSet
- LinkedHashSet 是按照元素的 hashCode 值来决定元素的存储位置,但同时又使用链表来维护元素的次序,这样使得它看起来像是按照插入顺序保存的。
集合的排序
- Comparable
- Comparable 位于 java.lang 包下,是一个排序接口,也就是说如果一个类实现了 Comparable 接口,就意味着该类有了排序功能。
- Comparator
- Comparator 是一个外部比较器,位于 java.util 包下,之所以说 Comparator 是一个外部比较器,是因为它无需在比较类中实现 Comparator 接口,而是要新创建一个比较器类来进行比较和排序。