集合框架
集合概述:
1. 集合框架为程序提供了一种处理对象组的标准方式。
2. 框架设计目标:首先,框架必须是高性能的(动态数组,链表,树,哈希表)的实现是高效率的。其次,框架中的集合必须以相似的方式操作。最后,容易扩展改变一个集合。为此整个框架设计为一系列的标准接口。
3. 算法是对集合的操作,定义成Collection类中的静态方法。
4. Iterator接口,定义了通用的访问集合元素的标准方式,即一次访问一个。
5. 集合框架中新添加了映射接口和类,但她不属于“集合”。但可以得到集合试图。
对集合的修改:
1. 泛型的加入增加了类型安全。
2. 自动装箱为简单数据类型的使用提供了便利
3. for-each 循环
集合接口:JDK 1.6
接口 | 描述 |
Collection | 允许处理一组对象,位于集合层次结构的顶部 |
Deque | 扩展Queue,处理双端队列(6 new) |
List | 扩展collection,处理序列(对象列表) |
NavigableSet | 扩展SortSet接口,以处理最近匹配元素取回。 |
Queue | 扩展Collection接口,处理列表中的特殊类型,其中的元素只能从前面删除。 |
Set | 扩展Collection接口,以处理集合,其中的元素必须是唯一的。wuxu |
SortSet | 扩展Set接口,以处理排序的集合。 |
集合类
类 | 描述 |
AbstractCollection | 实现大部分Collection接口 |
AbstractList | 扩展AbstractCollection,实现大部分List接口 |
AbstractQueue | 扩展AbstractCollection,实现部分Queue接口 |
AbstractSequentiaList | 扩展AbstractList,用于顺序而不是随机的访问集合元素 |
通过扩展AbstractSequentiaList实现链表 | |
通过扩展AbstractList实现动态数组 | |
ArrayDeque | 通过扩展AbstractCollection和实现Deque接口,实现动态双端队列(6 new) |
AbstractSet | 扩展AbstractCollection,实现大部分Set接口 |
EnumSet | 扩展AbstractSet,用于enum元素 |
扩展AbstractSet,用于哈希表 | |
LinkedHashSet | 扩展HashSet,允许按照插入的顺序来迭代 |
PriorityQueue | 扩展AbstractQueue,支持基于优先权的队列 |
TreeSet | 在树中实现组,扩展AbstractSet |
映射接口:
接口 | 描述 |
Map | 映射唯一键到值 |
Map.Entry | 描述映射中的元素(一个键值对).她是Map内部类 |
NavigableMap | 扩展了SortedMap,以处理基于最接近匹配搜索的的键值对 |
SortedMap | 扩展了Map,将键以升序保存。 |
|
|
Map接口:
映射围绕两个基本操作:get(),put()。Put ()方法并指定键和值。要得到值,调用get(KEY)方法。
映射不是集合,不实现Collection接口。但可以得到一个映射的集合视图,方法为entrySet。
要获得键的集合视图,方法是keySet()方法。
SortedMap:
确保以升序的方式保存键值对。这样能够通过她定义的方法得到,子映射,像:headMap(K end), endMap(K start), tailMap(K start,K end)。
NavigableMap:
她是java SE 6 中新增的扩展了,SortedMap接口。
Map.Entry:
利用她能够表示一个映射项的类型,在Map接口中声明的entrySet()方法返回的是包含所有映射项键值对的组,每个组元素就是一个Map.Entry对象。
她定义了equals(Object obj), K getKey(),V getValue(), int hashCode() , V setValue(V v)
类 | 描述 |
AbstractMap | 实现大部分Map接口 |
EnumMap | 扩展AbstractMap,用于enum键 |
HashMap | 扩展AbstractMap,用于哈希表 |
TreeMap | 扩展了AbstractMap用于树结构 |
WeakHashMap | 扩展了AbstractMap,用于弱键的哈希表 |
LinkedHashMap | 扩展了HashMap,允许按照插入的顺序来迭代 |
EdentityHashMap | 扩展了AbstractMap,并在比较文档时使用等价的引用。 |
|
|
比较器:Comparator
用户可以通过继承这个接口来按照自己定义的方式实现排序。