Java集合综述
Java集合框架中的接口
集合框架
Java的集合框架主要包括两种类型的容器,一种是集合,即Collection,用于存储一个元素集合;另一种是图,即Map,用于存储键值对映射。Collection接口又有3种子类型,分别是List,Set和Queue。Map不是集合,但是它们也完全整合在集合框架中。
集合框架包括三部分:
- 接口 :代表集合的抽象数据类型,不同的接口以不同的方式操作数据。
- 实现类:是接口的具体实现,本质为可重复使用的数据结构。
- 算法:集合对象包含的一些方法,例如排序和搜索等。算法是多态的,因为相同的方法可以在相似的接口上有不同的实现。
集合接口
接口名称 | 接口描述 |
---|---|
Collection接口 | 最基本的集合接口,一个Collection代表一组Object。Java不提供直接继承Collection的类,只提供子接口的实现类。 |
List接口 | 有序的Collection接口,List中的元素可以通过索引访问,第一个元素的索引为0。 |
Set接口 | Set不保存重复的元素,通过重写equals和hashCode方法来判断元素是否相等。 |
SortedSet | 继承于Set保存有序的集合。 |
Map | Map接口存储一组键值对象,提供Key到Value的映射。 |
Map.Entry | Map的一个内部类,用于描述Map中的一个键值对。 |
SortedMap | 继承于Map,使Key保持升序排序。 |
Enumeration | 枚举对象集合中的元素,现在已经被迭代器取代。 |
集合的实现类
类名 | 描述 |
---|---|
AbstractCollection | 实现了大部分的集合接口。 |
AbstractList | 继承于AbstractCollection,并且实现了大部分List接口。 |
AbstractSequentialList | 继承于AbstractList,提供对数据元素的链式访问。 |
LinkedList | 链表数据结构,线程不安全,允许null元素,插入与删除效率高但是查找效率低。 |
ArrayList | 大小可变的数组,随机访问和遍历性能良好,线程不安全,插入与删除效率低。 |
AbstractSet | 继承于AbstractCollection,实现了大部分Set接口。 |
HashSet | 不允许重复元素,无序,可以包含null。 |
LinkedHashSet | 哈希表和链接列表,可预知迭代顺序。 |
TreeSet | 实现了Set接口,可排序 |
AbstractMap | 实现了大部分Map接口 |
HashMap | 散列表,用于存储key-value映射。根据键的HashCode值存储数据,访问效率高。 |
TreeMap | 继承了AbstractMap,二叉树结构 |
WeakHashMap | 弱密钥哈希表 |
LinkedHashMap | 支持按自然顺序对元素排序 |
IdentityHashMap | 继承于AbstractMap,比较文档时使用引用相等。 |
迭代器
一般采用for循环或者增强for循环遍历数组,对集合而言可以采用迭代器遍历集合框架。迭代器是一个对象,实现了Iterator接口或者ListIterator接口。使用迭代器可以通过循环对集合进行操作。