一集合框架
(1)集合的概念
现实生活中的集合:很多的事物凑在一起。
数学中的集合:具有共同属性的事物的总体。
Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。
(2)集合框架的概念
有了集合的概念,什么是集合框架呢?集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何
集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
1接口:即表示集合的抽象数据类型。接口提供了让我们对集合中所表示的内容进行单独操作的可能。接口允许
集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
2实现(类):也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。
3算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例如查找、排序等。这些
算法通常是多态的,因为相同的方法可以在同一个接口被多个类实现时有不同的表现。事实上,算法是可复用的函
数。如果你学过C++,那C++中的标准模版库(STL)你应该不陌生,它是众所周知的集合框架的绝好例子。
集合框架被设计成要满足以下几个目标:
1该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
2该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
3对一个集合的扩展和适应必须是简单的。
(3)Java集合框架的概念
在Java语言中,设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。除了集合,
Java集合框架也定义了几个Map接口和类。Map里存储的是键/值对。尽管Map不是collections,但是它们完全整合在
集合中。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework)。
Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应
用就可以了,这样就大大提高了编程效率。
为此,整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedList、
HashSet和HashMap等,除此之外你也可以通过这些接口实现自己的集合。
(4)Java集合框架的作用
1在类的内部,对数据进行组织。
2简单而快速的搜素大数量的条目。
3有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素。
4有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任
意类型。
(5)为何选择集合而不是数组——与数组的对比
1数组的长度固定,集合长度可变。
2数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象。
二Java集合框架体系结构
Java提供了一个丰富的集合框架,这个集合框架包含了许多接口、抽象类和实现类。这些接口和类提供了丰富的
功能,能够满足基本的聚合需求。下图就是这个框架的整体结构图:
Java集合框架图解释:
1集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。
2抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。
3实现类:8个实现类(实线表示),对接口的具体实现。
我们主要学习的接口和实现类,也就是简化以后的Java集合框架图:
我们主要学习三大类接口:
1.Collection是一个接口,它包含了集合的基本操作和属性。Collection包含了List和Set两大分支。
(1) List是一个有序的队列,每一个元素都有它的索引,第一个元素的索引值是0,List的实现类有ArrayList,
LinkedList,Vector和Stack。
(2) Set是一个不允许有重复元素的集合。Set的实现类有HashSet和TreeSet。HashSet依赖于HashMap,它实际
上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。
2. Map是一个映射接口,即key-value键值对。Map中的每一个元素包含一个key和key对应的value。
(1) AbstractMap是个抽象类,它实现了Map接口中的大部分API,而HashMap,TreeMap,WeakHashMap都是
继承与AbstractMap。
(2) HashTable虽然继承与Dictionary,但是它实现了Map接口。
3. Iterator是遍历集合的工具,我们通常使用Iterator迭代器来遍历集合。Collection依赖于Iterator是因为
Collection的实现类都要实现iterator()方法,返回一个Iterator对象。ListIterator是专门为遍历List而存在的。
三集合框架
(1)集合接口
集合框架定义了一些接口,下表提供了每个接口的概述:
(2)集合类
Java提供了一套实现了Collection接口的标准集合类。其中一些是具体类,这些类可以直接拿来使用,而另外一
些是抽象类,提供了接口的部分实现。标准集合类汇总于下表:
(3)集合算法
集合框架定义了几种算法,可用于集合和映射。这些算法被定义为集合类的静态方法。在尝试比较不兼容的类型
时,一些方法能够抛出ClassCastException异常。当试图修改一个不可修改的集合时,抛出
UnsupportedOperationException异常。
集合定义三个静态的变量:EMPTY_SET EMPTY_LIST,EMPTY_MAP的。这些变量都不可改变。
(4)迭代器
通常情况下,你会希望遍历一个集合中的元素。例如,显示集合中的每个元素。做到这一点最简单的方法是采用
一个迭代器,它是一个对象,实现了Iterator接口或ListIterator接口。
迭代器,使你能够通过循环来得到或删除集合的元素。ListIterator继承了Iterator,以允许双向遍历列表和修改元
素。这里通过实例列出Iterator和listIterator接口提供的所有方法。
(5)比较器
TreeSet和TreeMap的按照排序顺序来存储元素. 然而,这是通过比较器来精确定义按照什么样的排序顺序。这个
接口可以让我们以不同的方式来排序一个集合。
四总结
1Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。
2集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。
3集合框架的类和接口均在java.util包中。
4Java集合类库中将接口(interface)与实现(implementation)分离。5Java平台提供了一个全新的集合框架。Java集合框架主要由一组用来操作对象的接口组成。不同接口描述一组
不同数据类型。
在后面的文章我们会详细的介绍Java集合框架中的各种接口以及实现类,并且会做出一些实例来深入学习集合框
架,我所参考的例子是慕课网的模拟学生选课功能。有兴趣的可以看一下:http://www.imooc.com/video/2415。