Java平台集合框架
一、集合
集合(也称为容器)广泛用于存储、获取和处理一组紧密相关的数据,从JDK1.2版本开始,Java类库的java.util包提供了一个全新的集合框架。(如图)
虚线作用的为接口,实现作用的均为实现类
例如:collection为Iterator的子接口。
集合框架包含三个部分:
- Interface:接口,定义表示各种集合的抽象数据类型
- Implementations:实现,实现各种集合接口的具体的类。
- Algorithms:算法,可以用作于各种集合对象的算法(排序,查找等)。
Java 的集合(容器)也可以通过数组来实现,事实上,Java平台集合框架中的类都包含一个封装的对象数组。而数组是最原始的集合实现,可以用于简单的数据应用,对于复杂的数据,就应该采用集合框架中的类和接口,使操作更加便捷,简易。
二、解析集合框架图
在探究接口层的时候,一般关注点在于:元素是否可重复 元素是否可以为null 元素是否有序
-
Iterator接口
迭代器接口,用来遍历集合中元素的接口。 -
Collection接口
用来表示任何对象或者元素集合,每个元素只能包含单个值。可称其为列表类集合类型 -
Map接口
用来描述从不重复的键到值的映射,每个元素都包含键/值对。可称为字典类集合类型 -
Comparator接口
用来将集合中的数据进行排序。
如果一个类没有实现comparable接口,或者希望使用其进行排序,可以自动以一个比较器(实现Comparator接口的类) -
Collection子接口
- List接口 : 元素可重复、元素值可以为null、元素插入有序
- Set接口 : 元素不能重复、元素值不能为null、元素无序(插入顺序)
- Queue接口 : 元素值可重复、元素值不能为null、元素插入有序
-
Map子接口
- AbstractMap接口
- SortMap接口:实现按照Key的顺序排列的映射
-
列表:
- ArrayList
数组列表,封装了一个动态再分配的数组 - LinkedList
链表,封装了一个双向链表。可以用来实现队列和堆栈。 - vector(线程安全)
向量,也是基于数组实现,支持线程同步(即某时刻只能有一个线程访问Vector,保证了线程安全)。 - Stack
堆栈,表示后进先出的对象。也可以用LinkedList实现堆栈。
- ArrayList
-
集:
- HashSet
散列集,底层是一个哈希表,值不能重复,可以为null,值无序。 - TreeSet
树集,底层是TreeMap,(红黑树),确保集合元素处于排序状态, - LinkedHashSet
链表散列集,底层是哈希表和双向链表,值不能重复,值可以为null,元素插入有序。
- HashSet
-
映射表:
- HashMap
散列映射表,底层为数组+链表,键不重复,值可重复,键值都可以为null,数据插入无序 - TreeMap
树映射表,底层为红黑树,可实现数据有序。 - LinkedHashMap
链表散列映射表,底层为哈希表和双向链表,值可以重复,键可以为null,键有序。 - HashTable(线程安全)
底层为数组+链表,键值都不能为null,键不可重复,无序。 - WeakHashMap
添加的元素会随着时间的推移而减少,4种Java引用:强引用,弱引用,软引用,虚引用。其调用过程会引起垃圾回收.
- HashMap
-
工具类:
- Collections
- Arrays