一、在 Java2 中,它被称为:Collection API
JDK 1.2 Collection接口列表 (Interface)
+————————————————————————————————————+
| 接口名 | 描述 |
|————————————————————————————————————|
| Collection | 实现一个为排序对象组。集合有时称作包(bag), |
| | 原因是允许重复,并且不对元素的类型或者顺序做任何限制 |
|————————————————————————————————————|
| Comparator | 提供比较某集合中元素的基本机制 |
|————————————————————————————————————|
| Iterator | 提供迭代某集合中元素的基本机制 |
|————————————————————————————————————|
| List | 扩展 Collection 接口以实现一个对象的有序集合。 |
| | 本有序列表可以被索引,并可以包含重复值 |
|————————————————————————————————————|
| ListIterator| 扩展 Iterator 接口以支持列表的迭代 |
|————————————————————————————————————|
| Map | 提供使用键值来存储和查询数据的基本功能。键值必须是唯一的 |
|————————————————————————————————————|
| Map.Entry | Map 的内部接口,制定操作“键-值”对的方法。 |
|————————————————————————————————————|
| SortedMap | 一个 Map ,其中元素按照升序排序。 |
|————————————————————————————————————|
| Set | 扩展 Collection 接口以实现一个有限集,集不允许重复值 |
| | 并且简单的集没有特定的顺序。有些集允许存在空值,但是一旦 |
| | 存在则只能存在一次 |
|————————————————————————————————————|
| SortedSet | 一个 Set ,其元素按照升序排序。 |
+————————————————————————————————————+
JDK 1.2 的 Collection 类 ( Class )
+—————————————————————————————————————+
|类名 | 描述 |
|—————————————————————————————————————|
|Arrays |提供搜索、排叙述组,以及把数组转换为列表的静态方法 |
|—————————————————————————————————————|
|Collections |提供搜索、排序和操作哪些实现 Collection 接口的对 |
| |象的静态方法 |
|—————————————————————————————————————|
|AbstractCollection |提供 Collection 接口的基本实现,并且逐次被其他接 |
| |口扩展 |
|—————————————————————————————————————|
|AbstractList |扩展AbstractColletion,并且提供List接口的基本实现 |
|—————————————————————————————————————|
|AbstractSequentialList|扩展AbstractList,并且实现顺序化访问列表的功能 |
| |(而不是随机访问列表) |
|—————————————————————————————————————|
|LinkedList |扩展AbstractSequentialList,并且实现双向链表 |
|—————————————————————————————————————|
|ArrayList |扩展AbstractList,并实现一个可调整数组 |
|—————————————————————————————————————|
|AbstractSet |扩展AbstractCollection,并提供Set接口的基本实现 |
|—————————————————————————————————————|
|HashSet |扩展AbstractSet,并是一个“键-值”对。给类使用 |
| |哈希表来存储,并不允许重复值,也不能使用空值。 |
|—————————————————————————————————————|
|TreeSet |扩展AbstractSet,并且实现一个支持SortedSet接口 |
| |的有序二进制树。TreeSet中不支持重复值。 |
|—————————————————————————————————————|
|AbstractMap |扩展AbstractCollection,并提供对Map接口的基本实现 |
|—————————————————————————————————————|
|HashMap |扩展AbstractMap,并且实现“键-值”对的映射, |
| |本类实现哈希表来存储,并不允许重复值。可以使用空值 |
|—————————————————————————————————————|
|TreeMap |扩展AbstractMap,并且实现支持SortedMap接口的 |
| |有序二进制树 |
|—————————————————————————————————————|
|WeakHashMap |扩展AbstractMap,并且实现具有弱键的映射。当哈希表 |
| |中条目的键被垃圾收集后,该条目会自动删除。 |
+—————————————————————————————————————+
二、Collection API 要点:
Collection API 提供了一个广泛的类和接口的集合。
将这些接口和类进行划分,可以得到基本的四种类型:
1. Collection
简单的 Collection 可以是无序的,并不必有任何限制。你可以使用任意一种
类型的对象,而且一个对象可以出现多次。Collection 接口支持添加、删除、
汇总和检验集合中项的操作方法。
2. List
List是允许一个对象多次出现的有序集合。顺序可以是自然排序或者按照对象
加入到集合中的顺序排序。因为列表是有序的,所以它的对象可以被索引。
ListIterator 接口提供了迭代列表中元素的方法。抽象的列表可以被随机的、
通过数组、通过链表、或者通过双向链表进行访问。
3. Set
Set 是不允许有重复值的集合。有些集合允许 null 值,但如果他们有 null
值的时候,这个值只能出现一次。
AbstractSet 和 HashSet 类创建了没有排序的集合。
TreeSet 类则创建通过二进制数来排序的集合。
4. Map
Map 是使用一系列值来查找或索引所存储数据的集合。借助于映射,你可以根据
一个关键字(key)域进行搜索。关键字值必须是唯一的。
在 JDK1.2中,映射替换字典(Dictionary),并作为关键字和值相联系的首选技术。
AbstractMap, HashMap, WeakHashMap 类创建的映射是无序的。
TreeMap 类创建的是通过二进制数来排序的映射。
三、基本类型存储值的方法:
1. 数组
数组为具有唯一值的有序条目提供存储机制。
当元素数量固定而且都有具体值时,就可以使用数组。
数组的排序机制使得很难在数组中添加和删除元素。
如果某数组满了,就需要创建一个新的数组,并在添加元素之前复制当前数组的元素。
数组不会提供一个特别的搜索机制。
2. 链表
链表为不需要唯一值的有序条目提供存储机制。
你可以很容易的在链表中添加和删除元素。一个链表的长度可以动态的改变,
因为每一个元素都指向下一个(有时候是指向前一个)元素。
然而,访问链表的速度比访问数组的速度要慢。链表也不会提供特别的搜索机制。
3. 树
树为升序排列的元素提供存储机制。
借助于树,你可以轻易的添加和删除元素,只要保持树的顺序即可。
元素均匀分布的树的搜索效率比链表和树组的要高。
4. 哈希表
在哈希表中,每个条目都用一对“键-值”对表示。
键必须是所存储条目的唯一标识符。通过键,你可以快速而有效的在哈希表中查找元素。
用哈希表在计算哈希值时会产生一些额外的问题。
哈希表最适合于大型的数据集。
JDK 1.2 Collection接口列表 (Interface)
+————————————————————————————————————+
| 接口名 | 描述 |
|————————————————————————————————————|
| Collection | 实现一个为排序对象组。集合有时称作包(bag), |
| | 原因是允许重复,并且不对元素的类型或者顺序做任何限制 |
|————————————————————————————————————|
| Comparator | 提供比较某集合中元素的基本机制 |
|————————————————————————————————————|
| Iterator | 提供迭代某集合中元素的基本机制 |
|————————————————————————————————————|
| List | 扩展 Collection 接口以实现一个对象的有序集合。 |
| | 本有序列表可以被索引,并可以包含重复值 |
|————————————————————————————————————|
| ListIterator| 扩展 Iterator 接口以支持列表的迭代 |
|————————————————————————————————————|
| Map | 提供使用键值来存储和查询数据的基本功能。键值必须是唯一的 |
|————————————————————————————————————|
| Map.Entry | Map 的内部接口,制定操作“键-值”对的方法。 |
|————————————————————————————————————|
| SortedMap | 一个 Map ,其中元素按照升序排序。 |
|————————————————————————————————————|
| Set | 扩展 Collection 接口以实现一个有限集,集不允许重复值 |
| | 并且简单的集没有特定的顺序。有些集允许存在空值,但是一旦 |
| | 存在则只能存在一次 |
|————————————————————————————————————|
| SortedSet | 一个 Set ,其元素按照升序排序。 |
+————————————————————————————————————+
JDK 1.2 的 Collection 类 ( Class )
+—————————————————————————————————————+
|类名 | 描述 |
|—————————————————————————————————————|
|Arrays |提供搜索、排叙述组,以及把数组转换为列表的静态方法 |
|—————————————————————————————————————|
|Collections |提供搜索、排序和操作哪些实现 Collection 接口的对 |
| |象的静态方法 |
|—————————————————————————————————————|
|AbstractCollection |提供 Collection 接口的基本实现,并且逐次被其他接 |
| |口扩展 |
|—————————————————————————————————————|
|AbstractList |扩展AbstractColletion,并且提供List接口的基本实现 |
|—————————————————————————————————————|
|AbstractSequentialList|扩展AbstractList,并且实现顺序化访问列表的功能 |
| |(而不是随机访问列表) |
|—————————————————————————————————————|
|LinkedList |扩展AbstractSequentialList,并且实现双向链表 |
|—————————————————————————————————————|
|ArrayList |扩展AbstractList,并实现一个可调整数组 |
|—————————————————————————————————————|
|AbstractSet |扩展AbstractCollection,并提供Set接口的基本实现 |
|—————————————————————————————————————|
|HashSet |扩展AbstractSet,并是一个“键-值”对。给类使用 |
| |哈希表来存储,并不允许重复值,也不能使用空值。 |
|—————————————————————————————————————|
|TreeSet |扩展AbstractSet,并且实现一个支持SortedSet接口 |
| |的有序二进制树。TreeSet中不支持重复值。 |
|—————————————————————————————————————|
|AbstractMap |扩展AbstractCollection,并提供对Map接口的基本实现 |
|—————————————————————————————————————|
|HashMap |扩展AbstractMap,并且实现“键-值”对的映射, |
| |本类实现哈希表来存储,并不允许重复值。可以使用空值 |
|—————————————————————————————————————|
|TreeMap |扩展AbstractMap,并且实现支持SortedMap接口的 |
| |有序二进制树 |
|—————————————————————————————————————|
|WeakHashMap |扩展AbstractMap,并且实现具有弱键的映射。当哈希表 |
| |中条目的键被垃圾收集后,该条目会自动删除。 |
+—————————————————————————————————————+
二、Collection API 要点:
Collection API 提供了一个广泛的类和接口的集合。
将这些接口和类进行划分,可以得到基本的四种类型:
1. Collection
简单的 Collection 可以是无序的,并不必有任何限制。你可以使用任意一种
类型的对象,而且一个对象可以出现多次。Collection 接口支持添加、删除、
汇总和检验集合中项的操作方法。
2. List
List是允许一个对象多次出现的有序集合。顺序可以是自然排序或者按照对象
加入到集合中的顺序排序。因为列表是有序的,所以它的对象可以被索引。
ListIterator 接口提供了迭代列表中元素的方法。抽象的列表可以被随机的、
通过数组、通过链表、或者通过双向链表进行访问。
3. Set
Set 是不允许有重复值的集合。有些集合允许 null 值,但如果他们有 null
值的时候,这个值只能出现一次。
AbstractSet 和 HashSet 类创建了没有排序的集合。
TreeSet 类则创建通过二进制数来排序的集合。
4. Map
Map 是使用一系列值来查找或索引所存储数据的集合。借助于映射,你可以根据
一个关键字(key)域进行搜索。关键字值必须是唯一的。
在 JDK1.2中,映射替换字典(Dictionary),并作为关键字和值相联系的首选技术。
AbstractMap, HashMap, WeakHashMap 类创建的映射是无序的。
TreeMap 类创建的是通过二进制数来排序的映射。
三、基本类型存储值的方法:
1. 数组
数组为具有唯一值的有序条目提供存储机制。
当元素数量固定而且都有具体值时,就可以使用数组。
数组的排序机制使得很难在数组中添加和删除元素。
如果某数组满了,就需要创建一个新的数组,并在添加元素之前复制当前数组的元素。
数组不会提供一个特别的搜索机制。
2. 链表
链表为不需要唯一值的有序条目提供存储机制。
你可以很容易的在链表中添加和删除元素。一个链表的长度可以动态的改变,
因为每一个元素都指向下一个(有时候是指向前一个)元素。
然而,访问链表的速度比访问数组的速度要慢。链表也不会提供特别的搜索机制。
3. 树
树为升序排列的元素提供存储机制。
借助于树,你可以轻易的添加和删除元素,只要保持树的顺序即可。
元素均匀分布的树的搜索效率比链表和树组的要高。
4. 哈希表
在哈希表中,每个条目都用一对“键-值”对表示。
键必须是所存储条目的唯一标识符。通过键,你可以快速而有效的在哈希表中查找元素。
用哈希表在计算哈希值时会产生一些额外的问题。
哈希表最适合于大型的数据集。