用 “ 集合框架 ” 设计软件时,记住该框架四个基本接口的下列层次结构关系会有用处:
- Collection 接口是一组允许重复的对象。
- Set 接口继承 Collection ,但不允许重复。
- List 接口继承 Collection ,允许重复,并引入位置下标。
- Map 接口既不继承 Set 也不继承 Collection , 存取的是键值对
我们以下面这个图表来描述一下常用的集合的实现类之间的区别:
接口 |
成员重复性 |
元素存放顺序( Ordered/Sorted ) |
元素中被调用的方法 |
基于那中数据结构来实现的 | |
Set |
Unique elements |
No order |
equals() hashCode() |
Hash 表 | |
LinkedHashSet |
Set |
Unique elements |
Insertion order |
equals() hashCode() |
Hash 表和双向链表 |
SortedSet |
Unique elements |
Sorted |
equals() compareTo() |
平衡树( Balanced tree ) | |
ArrayList |
List |
Allowed |
Insertion order |
equals() |
数组 |
LinkedList |
List |
Allowed |
Insertion order |
equals() |
链表 |
Vector |
List |
Allowed |
Insertion order |
equals() |
数组 |
HashMap |
Map |
Unique keys |
No order |
equals() hashCode() |
Hash 表 |
LinkedHashMap |
Map |
Unique keys |
Key insertion order/Access order of entries |
equals() hashCode() |
Hash 表和双向链表 |
Hashtable |
Map |
Unique keys |
No order |
equals() hashCode() |
Hash 表 |
TreeMap |
SortedMap |
Unique keys |
Sorted in key order |
equals() compareTo() |
平衡树( Balanced tree ) |