资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章集合类第5章 集合类ppt课件(全)本章学习目标v了解使用集合类的主要目的了解使用集合类的主要目的v掌握掌握Collection接口的作用及常用操作方法接口的作用及常用操作方法v掌握掌握Set接口的作用及常用操作方法接口的作用及常用操作方法v掌握掌握List接口的作用及常用操作方法接口的作用及常用操作方法v掌握掌握Map接口的作用及常用操作方法接口的作用及常用操作方法第5章 集合类ppt课件(全)v任务1:认识Java的集合类【任务内容任务内容】认识Java的集合类【能力目标能力目标】了解java的集合类5.1 认识集合类第5章 集合类ppt课件(全)通常,程序总是根据运行时才知道的某些条件去创建新的对象,在此之前,不会知道所需对象的数量,甚至确切的类型。为解决这个普遍的问题,需要在任意时刻和任意位置创建任意数量的对象,所以就不能依靠创建命名的引用来持有每一个对象,因为你不知道实际会需要多少个这样的引用。数组是Java提供的一种保存对象引用的方式,如果保存的是基本数据类型,也推荐使用这种方式,但它的缺点是长度固定。Java实用类库还提供了一套完整的容器类来解决这个问题,其中基本的类型是List、Set、Queue和Map。这些对象类型也称为集合类。容器提供了完善的方法来保存对象,我们可以使用它们来解决对象数量惊人的问题。第5章 集合类ppt课件(全)v集合类位于java.util包中,主要包括Collection和Map接口。Collection接口继承关系如下图所示: 第5章 集合类ppt课件(全) Collection:一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元必须按照插入的顺序保存元素素,Set不能有重复的元素不能有重复的元素,Queue按照排按照排队规则确定对象产生的顺序队规则确定对象产生的顺序(通常与它们被通常与它们被插入的顺序相同插入的顺序相同);第5章 集合类ppt课件(全)vMap接口继承关系 如下图所示:第5章 集合类ppt课件(全)vMap:一组成对成对的“键值对”对象,允许你使用键来查找值。它将某些对象与另外一些对象关联在一起,我们可以使用键对象来查找值对象vCollection和Map虽然是顶层接口,但在实际开发中并不推荐直接使用,而是使用其子接口或具体的实现类 。第5章 集合类ppt课件(全)任务2:掌握 Collection接口【任务内容任务内容】将多个字符串对象集中存储和管理。【能力目标能力目标】v掌握集合的概念和主要用途v创建集合对象v向集合中添加元素v删除集合对象v打印集合对象的内容【任务分析任务分析】 通常我们要对多个对象集中存储和管理时,都会使用数组来实现,但使用数组的不足之处是无法动态改变数组的大小。Java中的集合类不仅可以满足我们任务的要求,同时还能够动态添加和删除所管理的对象,克服使用数组带来的局限性。5.2 Collection和Iterator接口第5章 集合类ppt课件(全)v范例:CollectionSample.java vCollection接口代表了可以存放单个元素的容器,是List和Set的父接口,该接口定义了的方法可以应用于它所有的子接口。Collection接口定义如下:public interface Collection extends IterableCollection是基于泛型的,所谓泛型是将类型参数化以达到代码复用提高软件开发效率。关于泛型的概念我们可以简单理解为在使用基于泛型的集合时,必须指定集合中元素的类型。 第5章 集合类ppt课件(全)Collection接口中定义的常用方法如下 boolean add(E e) add(E e)向集合中添加一个元素,如果添加成功向集合中添加一个元素,如果添加成功则返回返回truetrueboolean addAll(Collection? boolean addAll(Collection c)extends E c)将指定将指定collectioncollection中的所有元素都添加到当前中的所有元素都添加到当前collectioncollection中,如果添加成功中,如果添加成功则返回返回truetruevoid clear()void clear()清除集合中的所有元素,此清除集合中的所有元素,此时集合的集合的长度度为0 0boolean contains(Object o)boolean contains(Object o)判断当前的判断当前的collectioncollection中是否包含指定的元素中是否包含指定的元素boolean containsAll(Collection boolean containsAll(Collection c)c)判断当前的判断当前的collectioncollection中是否包含指定中是否包含指定collectioncollection中的所有元素中的所有元素boolean equals(Object o)boolean equals(Object o)判断当前判断当前collectioncollection与指定与指定对象是否相等象是否相等boolean isEmpty()boolean isEmpty()判断当前判断当前collectioncollection是否是否为空。当集合空。当集合长度度为0 0时返回返回truetrue,否,否则返回返回falsefalseIterator iterator()Iterator iterator()返回一个迭代器返回一个迭代器对象,用于遍象,用于遍历集合中的元素集合中的元素boolean remove(Object o)boolean remove(Object o)如果当前如果当前collectioncollection中包含指定的元素,中包含指定的元素,则将其从当前将其从当前collectioncollection中移除,如果移中移除,如果移除成功除成功, ,则返回返回truetrueboolean removeAll(Collection boolean removeAll(Collection c)c)移除当前移除当前collectioncollection中那些也包含在指定中那些也包含在指定collectioncollection中的所有元素,如果移除成功中的所有元素,如果移除成功, ,则返回返回truetrueboolean retainAll(Collection boolean retainAll(Collection c)c)保留当前保留当前collectioncollection中包含在指定中包含在指定collectioncollection中的所有元素。中的所有元素。换句句话说,就是移除,就是移除当前当前collectioncollection中不包含在指定中不包含在指定collectioncollection中的所有元素中的所有元素int size()int size()返回当前返回当前collectioncollection中元素的个数中元素的个数Object toArray()Object toArray()返回包含当前返回包含当前collectioncollection中所有元素的数中所有元素的数组T toArray(T a)T toArray(T a)返回包含当前返回包含当前collectioncollection中所有元素的数中所有元素的数组。该数数组的的类型与指定的数型与指定的数组类型相同型相同第5章 集合类ppt课件(全)任务3:掌握 Iterator接口【任务内容任务内容】遍历集合中存储的元素。【能力目标能力目标】v理解迭代器的用途v掌握迭代器的用法【任务分析任务分析】v前面我们掌握了如何创建集合对象以及如何向集合中添加和删除元素。但是我们操作集合对象并不仅是向其中添加和删除内容那么简单,我们还需要访问保存在集合中的元素。由于集合中保存了多个元素,因此我们需要逐个从集合中取出并操作这些元素的内容,要实现这一目的,就需要使用Java集合框架提供的迭代器(Iterator)来实现。5.2 Collection和Iterator接口第5章 集合类ppt课件(全)v范例:IteratorSample.java vIterator接口也是集合框架中的一个重要成员,与其他集合类不同的是,Collection和Map主要是用于存储和管理对象,而Iterator主要用于遍历Collection中的对象 。Iterator接口定义如下:vpublic interface IteratorvIteraor接口常用方法:vboolean hasNext(): 如果容器中仍有元素可以遍历,则返回true;vE next(): 返回迭代器所指向的集合中的下一个元素;vvoid remove(): 从迭代器所指向的集合中移除迭代器最后一次遍历的元素,每次调用next方法,只能调用一次该方法。第5章 集合类ppt课件(全)任务任务4:掌握:掌握 ArrayList 【任务内容任务内容】集中存储和管理多个字符串对象,并获取及修改指定的对象信息。同时反向遍历集合中的所有元素。【能力目标能力目标】v掌握ArrayList的概念和实现原理v创建ArrayList对象v在ArrayList中添加和删除元素v获取指定的元素v修改指定的元素v获取指定元素的索引v反向遍历ArrayList【任务分析任务分析】vCollection接口为我们提供了在集合中添加、删除和按照添加元素的顺序遍历元素的方法。当我们需要读取或修改集合中指定的元素,或者我们需要反向遍历集合中的元素时,我们就需要使用扩展了Collection接口功能的其子接口来实现。ArrayList就是Collection接口的List子接口的一个实现类。借助这个接口我们就可以完成任务指定的功能。5.3 List接口第5章 集合类ppt课件(全)v范例:ArrayListSample.javav作为Collection接口的子接口,List接口在Collection接口的基础上增加了大量的方法。与数组类似,List中的元素都有其对应的顺序索引,因此我们可以像操作数组一样访可以像操作数组一样访问问List中的元素中的元素。我们可以很方便的在List中插入、删除元素,元素的索引与其插入的顺序相关。 v有两种类型的List:vArrayList: 如果我们需要一个经常被随机访问经常被随机访问,但不经常插入和删除元素的集合,应首先考虑ArrayList;vLinkedList: 与ArrayList相反,它长于在集合中插入长于在集合中插入和删除元素和删除元素,但随机访问的效率相对较低。第5章 集合类ppt课件(全)vArrayList是List接口基于数组的典型实现,其内部封装了一个动态的数组。在创建ArrayList时可以指定集合的容量,若不指定,则默认为0。以后在向集合中插入元素时,集合的容量会动态按默认的容量动态分配。若一次性增加大量的元素,可能会导致集合的容量被多次动态分配,这时可调用ArrayList的ensureCapacity方法来减少动态分配的次数,从而提高效率。 第5章 集合类ppt课件(全)任务5:掌握 LinkedList【任务内容任务内容】v对集合中的元素实现类似于队列和栈的操作方式。【能力目标能力目标】v掌握LinkedList的概念和实现原理v在集合头部添加、删除及读取元素v在集合末尾添加、删除及读取元素v理解LinkedList和ArrayList接口的区别【任务分析任务分析】v前面所介绍的集合类只能在集合的头部读取元素,末尾添加元素。在访问元素时只能按顺序获取元素或在指定元素索引的情况下来获取指定元素。有时,我们希望操作集合能够像操作队列和堆栈一样进行双向操作,既可以读取头部元素,也可以直接获取末尾的元素;既可以删除末尾的元素,也可以直接删除第一个元素。LinkedList就是一个具备这样功能的集合对象。5.3 List接口第5章 集合类ppt课件(全)v范例:LinkedListSample.java vLinkedList也是List接口的实现类,同时,它还实现了Queue接口,能够实现一个双向队列的数据结构。因此,它不仅可以像使用List一样根据索引随机访问集合中的元素,也可以像队列和栈一样对其中的元素进行操作。第5章 集合类ppt课件(全)vLinkedList常用方法:public void public void addFirst(E e)(E e)将指定元素插入到列表的开将指定元素插入到列表的开头public void addLast(E e)将指定元素插入到列表的末尾将指定元素插入到列表的末尾public E getFirst()返回此列表的第一个元素返回此列表的第一个元素public E getLast()返回此列表的最后一个元素返回此列表的最后一个元素public E removeFirst()移除并返回此列表的第一个元素移除并返回此列表的第一个元素public E removeLast()移除并返回此列表的最后一个元素移除并返回此列表的最后一个元素public E element()获取但不移除此列表的第一个元素取但不移除此列表的第一个元素public E poll()获取并移除此列表的第一个元素取并移除此列表的第一个元素public boolean offerFirst(E e)在此列表的开在此列表的开头插入指定的元素,插入成功返回插入指定的元素,插入成功返回true,否,否则返回返回falsepublic boolean offerLast(E e)在此列表的末尾插入指定元素在此列表的末尾插入指定元素, 插入成功返回插入成功返回true,否,否则返回返回falsepublic E peekFirst()获取但不移除此列表的第一个元素;如果此列表取但不移除此列表的第一个元素;如果此列表为空,空,则返回返回nullpublic E peekLast()获取但不移除此列表的最后一个元素;如果此列表取但不移除此列表的最后一个元素;如果此列表为空,空,则返回返回nullpublic E pollFirst()获取并移除此列表的第一个元素;如果列表取并移除此列表的第一个元素;如果列表为空,空,则返回返回nullpublic E pollLast()获取并移除此列表的最后一个元素;如果列表取并移除此列表的最后一个元素;如果列表为空,空,则返回返回nullpublic E pop()此方法等效于此方法等效于removeFirst()public void push(E e)此方法等效于此方法等效于addFirst(E)第5章 集合类ppt课件(全)任务任务6:认识:认识Set接口接口 【任务内容任务内容】认识Set接口【能力目标能力目标】了解Set接口及其实现类vSet接口在Collection接口的基础上没有添加任何额外的方法,唯一不同的是,Set接口中不允许存放接口中不允许存放重复的元素重复的元素,如果试图将两个相同的元素加入Set中,则添加操作会失败。 vSet接口中常用的两个实现类是HashSet和TreeSet。HashSet中保存的元素不会按任何规律进行排序中保存的元素不会按任何规律进行排序,也就是说我们从Set中取出元素的顺序,不一定是我们放入时的顺序。TreeSet可以默认按照元素的自然顺序进可以默认按照元素的自然顺序进行排序。行排序。 5.4 Set接口第5章 集合类ppt课件(全)任务任务7:掌握:掌握HashMap 【任务内容任务内容】将多组存在映射(关联)关系的数据集中存储和管理。【能力目标能力目标】v掌握HashMap的概念及用途v向HashMap中添加和删除元素v获取HashMap中的元素v获取HashMap本身的信息,如长度、是否包含指定元素等v分别访问HashMap中key和value的集合【任务分析任务分析】vCollection接口的实现类只能保存单个元素。当我们需要集中存储和管理的数据是一组存在映射或关联关系的数据时,Collection就无法满足我们的需求。这时我们就可以使用Map来实现。Map的实现类中可以存储以键-值对形式存在的多组数据,一组键-值表示具有映射或关联关系的一组数据。HashMap是Map接口的一个实现类,它实现并扩展了Map接口,借助它可以很好的完成本节任务的要求。5.5 Map接口第5章 集合类ppt课件(全)v范例:HashMapSample.javavMap可以用来保存具有映射关系的一组数据。前面我们讲的List和Set每次都只能操作一个数据,而Map每次可以操作一组 (两个) 数据。这一组数据一个称为key(键),一个称为value(值)。我们在向Map中保存数据以及从Map中读取数据时,都要成对操作。 vMap接口定义如下: public interface Mapv与Collection接口一样,Map接口中的接口中的key和和value都只能是都只能是引用类型的对象,而不能是基本数据类型引用类型的对象,而不能是基本数据类型。v与Set接口类似,Map中的中的key不允许重复不允许重复,Map判断key相等的规则是:两个key通过equals()方法比较相等,且它们的hashCode()方法返回值也相等。如果我们向Map中保存相同key的一组数据,则后面保存的一组数据会覆盖已有的一组数据。 第5章 集合类ppt课件(全)vHashMap常用方法如下: void clear()清除清除Map中的所有中的所有key-value对boolean containsKey(Object key)如果如果Map中包含指定的中包含指定的key,则返回返回trueboolean containsValue(Object value)如果如果Map中包含指定的中包含指定的value,则返回返回trueV get(Object key)返回指定返回指定key所所对应的的value,如果没有,如果没有,则返回返回nullV put(K key, V value)将指定的将指定的key-value对放入放入Map中中void putAll(Map m)从指定的从指定的Map中复制所有中复制所有key-value对到当前的到当前的Mapboolean isEmpty()判断此判断此Map是否是否为空空V remove(Object key)如果如果Map中存在指定中存在指定key以及其以及其对应的的value,则从从Map中中删除除该key-valueint size()返回此返回此Map中中key-value对的数量的数量Set keySet()返回包含此返回包含此Map中的所有中的所有key的的Set集合集合Collection values()返回包含此返回包含此Map中的所有中的所有value的的Collection集合集合第5章 集合类ppt课件(全)任务8:掌握TreeMap【任务内容任务内容】将多组存在映射(关联)关系的数据集中按指定顺序存储和管理。【能力目标能力目标】v掌握TreeMap的概念及用途v分别访问TreeMap中key和value的集合v了解HashMap和TreeMap的区别【任务分析任务分析】vHashMap中保存的键-值对数据是无序的,它不保证其中的每一组元素按某种规则进行排序。而TreeMap可以按照键(Key)对每一组元素进行排序存储。我们可以使用默认的排序规则,也可以指定排序规则。下面的范例我们借助TreeMap默认的排序规则对Map中保存的键-值对进行排序。5.5 Map接口第5章 集合类ppt课件(全)v范例:TreeMapSample.java v与Set接口派生出的TreeSet一样,Map接口也派生出了TreeMap类。TreeMap可以保证其中的key-value对处于有序状态。第5章 集合类ppt课件(全)任务任务9:遍历:遍历Map集合集合【任务内容任务内容】遍历存储在Map中的键-值对【能力目标能力目标】v掌握遍历Map中键的方法v掌握遍历Map中值的方法v掌握同时遍历Map中键和值的方法【任务分析任务分析】vMap提供了多种遍历的方法。我们可以先获得Map中所有键的集合,然后遍历这个集合,根据每个键获取对应的值。我们也可直接获取值的集合,然后遍历它。同时,我们也可以借助Map中的一个内部类同时遍历键和值,并分别对其进行操作。5.5 Map接口第5章 集合类ppt课件(全)v范例:IterateMapSample.javav由于Map中保存的是多个key-value对,因此对Map的访问与访问Collection有些不同。访问Map同样需要循环,但在循环内我们可以仅访问key,或者仅访问value,又或者同时访问key和value。 v 第5章 集合类ppt课件(全)作业v1. 定义一个表示人的类,创建10个该类型的对象并对其进行初始化,然后将10个对象保存在一个List中,最后将这10个对象的信息按照姓名排序输出。 注:除姓名属性外,类的其他属性可自行定义。v2. 创建一个TreeMap类的对象,保存由学生的学号和姓名所组成的键值对,然后按学号的自然顺序输出学生的信息。v3. 按照任务7中遍历Map集合的3种方法,分别输出第2题中学生的学号姓名信息。第5章 集合类ppt课件(全)
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号