Java面向对象思想与程序设计-第8章-集合类.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java面向对象思想与程序设计-第8章-集合类.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 思想 程序设计 集合
- 资源描述:
-
1、8 8集 合 类第章Java程序设计8.2 集合类总览8.3 List集合8.4 Set集合8.1 泛型8.5 Map集合8.6 集合元素的操作8.7 小结C目录ONTENTS8.1.1 什么是泛型泛型,也称之为“参数化类型”,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。8.1.1 什么是泛型【例8.1】假设有一个篮子(Basket),我们可以用它存放不同的物品,如放鸡蛋(Egg),放面包(Bread),当然也可以放钱(Money)等等。如何定义这个Basket类来满足存放不同种类物品
2、的需求呢?【分析】在定义这个类时,需要解决这样一个问题:放入篮子的这些物品对象存放在哪?我们可以通过数组来存放这些对象;这样引出了下一个问题:数组类型如何定义可以满足存放不同类型的物品?我们可以用所有类型的父类Object来进行定义。Example8_01.java8.1.2 泛型类的定义泛型类是带有类型参数的类,类中也有属性和方法。泛型类的定义形式:class 泛型类名/类体泛型类型参数:T:代表这是一个类型TypeE:代表这是一个元素ElementK:代表这是一个键KeyV:代表这是一个值Value8.1.2 泛型类的定义定义泛型类的对象:泛型类名 对象名=new 泛型类名(形参表);或泛
3、型类名 对象名=new 泛型类名(形参表);也可以用“?”代替“实际参数表列”如:Basket basket=new Basket();【例8.2】定义一个泛型篮子类,并创建相关的对象。Example8_02.java 8.1.2 泛型类的定义 泛型的使用规则:泛型的类型参数只能是类类型,而不能是简单类型。泛型的类型参数可以有多个。静态字段的类型不能是类型参数。不能直接创建类型参数变量的数组,只能通过反射创建。泛型的参数类型可以使用extends和super关键字。泛型的参数类型还可以是通配符类型。8.1.3 泛型接口的定义除了可以定义泛型类外,还可以定义泛型接口。泛型接口定义形式:inter
4、face 接口名/8.1.3 泛型接口的定义在实现接口时,也应该声明与接口相同的类型参数。实现形式如下:class 类名 implements 接口名/8.1.4 泛型方法的定义1.泛型方法访问限定词 static 方法类型 方法名(参数表列)/方法也可以是泛型方法,泛型方法可以定义在泛型类中,也可以定义在非泛型类中。泛型方法定义形式:8.1.4 泛型方法的定义2.具有可变参数的方法System.out.printf(“%d,%fn”,i,f);System.out.printf(“x=%d,y=%d,z=%d”,x,y,z);printf是具有可变参数的方法。利用泛型方法,可以定义具有可变参
5、数的方法,如printf方法:8.1.4 泛型方法的定义访问限定词 方法类型 方法名(类型参数名 参数名)/【例8.3】具有可变参数的方法的定义与使用。Example8_03.java2.具有可变参数的方法8.1.5 泛型参数的限定 如果只接收指定范围内的类类型,可以对泛型的参数进行限定。参数限定的语法形式:类型形式参数 extends 父类“类型形式参数”是指声明泛型类时所声明的类型,“父类”表示只有这个类下面的子类才可以做实际类型。【例8.4】定义一个泛型类,能够找出多个数据中的最大数和最小数。Example8_04.java8.2 集合类总览8.3 List集合8.4 Set集合8.1
6、泛型8.5 Map集合8.6 集合元素的操作8.7 小结C目录ONTENTS8.2.1 集合类及其特点集合类的特点:空间自主调整,提高空间利用率。提供不同的数据结构和算法,减少编程工作量。提高程序的处理速度和质量。注意:集合类不支持简单数据类型的存放和处理。如果确实需要存储简单类型数据可以先进行类的封装(装箱)处理。集合类中存放的是对象的引用,而不是对象本身。8.2.2 Java的集合类CollectionListSetArrayListLinkedListHashSetTreeSetMapHashMapTreeMapVectorStack8.2.2 Java的集合类Java的集合类主要继承了
7、Map接口和Collection接口。其中在Collection接口中定义了大多数集合类支持的方法。下面给出Collection接口的部分方法。返回类型方法名方法功能booleanadd(E e)向集合中添加新元素booleanaddAll(Collection c)将指定集合中的所有元素添加到当前集合中。booleanremove(Object o)删除当前集合中包含的指定元素booleanremoveAll(Collection c)删除当前集合中与指定集合相同的所有元素booleanretainAll(Collection c)保留当前集合中与指定集合相同的所有元素voidclear()
8、删除当前集合中的所有元素booleancontains(Object o)查找当前集合中是否有指定元素booleancontainsAll(Collection c)查找当前集合中是否包含指定集合中的所有元素booleanisEmpty()当前集合是否为空intsize()返回当前集合的元素个数Iteratoriterator()返回一个可遍历当前集合的迭代器Streamstream()返回一个连接集合的顺序流ObjecttoArray()返回一个当前集合所有元素的数组8.2.2 Java的集合类Java中实现Collection接口的类,主要包括List集合接口和Set集合接口。List是一
9、个有序元素集合,允许出现重复元素。Set是一个无序集合,不允许出现重复元素。Map是Java.util包中的另一个接口,Map集合中的每个元素都由一个键-值对构成。在Map中不能有重复的键,但是可以有相同的值。集合类均采用泛型进行定义。8.2 集合类总览8.3 List集合8.4 Set集合8.1 泛型8.5 Map集合8.6 集合元素的操作8.7 小结C目录ONTENTS8.3.1 List接口List集合接口,也称之为线性表,是一个有序列表。集合中的元素是按顺序进行存放和处理的,可以像访问数组元素一样通过序号访问和处理List集合元素。List集合重点关注的是索引而不是元素本身,集合中允许
10、出现重复元素。实现List集合接口的常用类有ArrayList、LinkedList、Vector和Stack。8.3.1 List接口表8.2 List接口中的主要方法类型方法名方法功能booleanadd(E e)把元素e加到表的尾部voidadd(int index,E e)把元素e加到表的index位置,原index位置元素顺序后移booleanequals(Object o)比较对象o是否与表中的元素是同一元素Eget(int index)得到表中index位置的元素booleanindexOf(Object o)判断元素o在表中是否存在。如果不存在,则返回-1Iteratorite
11、rator()获得表的遍历器 List接口的定义形式:public interface List extends Collection8.3.2 ArrayList集合类ArrayList是一种具有可变大小的动态数组结构,ArrayList类的定义形式:public class ArrayList extends AbstractListimplements List,RandomAccess,Cloneable,Serializable 8.3.2 ArrayList集合类表8.3 ArrayList类的构造方法【例8.5】已知一个人员名单,将每个名字前面添加一个序号。Example8_05
12、.java方法名方法功能ArrayList()构造一个初始容量为 10 的空列表。ArrayList(Collectionc)构造一个包含指定 collection 的元素的列表。ArrayList(intcapacity)构造一个具有指定初始容量的空列表。8.3.3 LinkedList集合类LinkedList集合类是另一个常用的线性列表集合,采用的是双向链表结构。LinkedList类的定义形式:public class LinkedListextends AbstractSequentialList implements List,Deque,Cloneable,Serializabl
13、e8.3.3 LinkedList集合类LinkedList实现了两个接口:List和Deque接口,List接口中定义了线性表操作方法,Deque接口中定义了线性数列从队列两端访问元素的方法。LinkedList对象既可以表示线性序列表,也可以把它当做堆栈使用,还可以把它当做队列使用。8.3.3 LinkedList集合类返回类型方法名 方法功能booleanadd(E e)将元素e加到列表的末尾voidadd(int index,E element)把元素e插入到列表index所指位置,原位置元素顺序后移voidaddFirst(E e)将元素e插入到列表的头部EgetFirst()返回列
14、表的头部元素intindexOf(Object o)返回元素o在列表中第1次出现的位置。如果无元素o,则返回-1booleanofferFirst(E e)将元素e插入到列表的头部EpollLast()返回列表中尾部元素并且从表中删除该元素。如果表空,则返回nullEpop()栈顶元素出栈voidpush(E e)元素e入栈EremoveFirst()从列表中删除头部元素并返回该元素LinkedList类的部分方法【例8.6】求小于某个正整数的所有素数。Example8_06.java8.2 集合类总览8.3 List集合8.4 Set集合8.1 泛型8.5 Map集合8.6 集合元素的操作8
15、.7 小结C目录ONTENTSSet接口的定义形式:public interface Set extends CollectionSet实现了Collection接口定义的所有操作。Set还能利用相关方法实现数学上的集合运算,如交集、并集、差集8.4.1 Set接口表8.5 常用的集合运算方法说明集合运算对应方法实现功能并集addAll(Collection c)得到两个集合的并集,结果保存到当前集合中交集retainAll(Collection c)得到两个集合的交集,结果保存到当前集合中差集removeAll(Collection c)得到两个集合的差集,结果保存到当前集合中超集conta
16、insAll(Collection c)当前集合是否包含集合c的所有元素,是返回true8.4.2 HashSet集合类HashSet的定义形式:public class HashSetextends AbstractSetimplements Set,Cloneable,Serializable该类实现了Set接口,为用户提供快速查找和添加元素功能。8.4.2 HashSet集合类说明:使用构造方法创建空HashSet,会预先分配一些元素空间,默认是16个元素。构造方法中的加载因子是指当空间利用率达到这个因子时就需要进行扩容了。HashSet存储每个元素时会生成一个唯一的整数标识散列码(ha
17、sh code。HashSet根据这个标识来决定元素所在的存储位置。缺点:保存的元素无任何特定的顺序。8.4.2 HashSet集合类返回类型方法名方法功能HashSet()构造一个新的空 set,初始容量是 16,加载因子是 0.75。HashSet(Collection c)构造一个包含指定 collection 中的元素的新 set。HashSet(int Capacity)构造一个新的空 set,指定初始容量和默认的加载因子(0.75)。HashSet(int Capacity,float loadFactor)构造一个新的空 set,指定初始容量和加载因子。booleanadd(E
18、e)如果set 中没有元素e,则添加。voidclear()删除set中所有元素。Objectclone()返回此 HashSet 实例的副本,但并不复制这些元素本身。booleancontains(Object o)查询set中是否包含指定元素obooleanisEmpty()判断set中是否没有任何元素。Iterator iterator()返回set中元素进行迭代的迭代器。booleanremove(Object o)删除set中的指定元素ointsize()返回set中的元素的数量(set的容量)。表8.6 HashSet的主要方法8.4.3 TreeSet集合类、TreeSet类的定
19、义形式:public class TreeSetextends AbstractSetimplements NavigableSet,Cloneable,Serializable说明:TreeSet内部采用了二叉搜索树的数据结构进行元素的存储,实现了元素的有序存放。TreeSet适合按顺序遍历。使用TreeSet类的前提条件:存储的元素类型必须是可排序的。8.4.3 TreeSet集合类返回类型方法名方法功能TreeSet()构造一个新的空TreeSet,根据元素的自然顺序进行排序。TreeSet(Collection c)构造一个包含指定 Collection 元素的新 TreeSet,按照
展开阅读全文