您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > Java课程16_集合
IT教育系列集合JAVA-第16节第2页版权声明•本课件由浙江浙大网新集团有限公司(以下简称:网新集团)编制,仅供网新集团培训机构的学员学习使用;•网新集团享有本课件中的文字叙述、文档格式、插图、照片等所有信息资料的版权,受知识产权法及版权法等法律、法规的保护。任何个人或组织未经网新集团的书面授权许可,均不得以任何形式使用本课件的任何内容,否则将视为不法侵害,网新集团保留追究侵权人相关法律责任的权利•如您不接受上述声明,请勿使用本课件,并尽快销毁或删除本课件任何形式的备份;如您使用本课件,将被视为您接受并同意遵守上述声明。第3页第二部分高级特性介绍内容提要15.0…………………………………..Java集合框架集合第4页第5页15.0Java集合框架-入门什么是集合作为一种容器,用来存放实例对象。这样的容器在Java里面有很多种,分别具备不同的特性。使用的最多的有ArrayList,HashMap使用场合需要一个空间来存放一组对象的时候。比如,一个查询方法,需要返回某个班级的所有学生对象。与数组的异同都可以存储一组对象数组功能比较单一,集合实现了很多实用的功能。数组只有一种存储方式,集合有多种Java集合(位于java.util包中)•Java集合主要分为三种类型:–Set(集):集合中的对象不按特定方式排序,并且没有重复对象。它的有些实现类能对集合中对象按特定方式排序。–List(列表):集合中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。List与数组有些相似。–Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。它的有些实现类能对集合中的键对象进行排序。6主要集合类的类框图7Set(集)•Set是最简单的一种集合,集合中的对象不按特定方式排序,并且没有重复对象。•Set接口主要有两个实现类HashSet和TreeSet。•HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。HashSet类还有一个子类LinkedHashSet类,它不仅实现了哈希算法,而且实现了链表数据结构,链表数据结构能提高插入和删除元素的性能。•TreeSet类实现了SortedSet接口,具有排序功能。8Set的一般用法SetStringset=newHashSetString();Strings1=newString(hello);Strings2=s1;Strings3=newString(world);set.add(s1);set.add(s2);set.add(s3);System.out.println(set.size());//打印集合中对象的数目2List(列表)•List的主要特征是其元素以线性方式存储,集合中允许存放重复对象。List接口主要的实现类包括:–ArrayList:ArrayList代表长度可变的数组。允许对元素进行快速的随机访问,但是向ArrayList中插入与删除元素的速度较慢。LinkedList:在实现中采用链表数据结构。对顺序访问进行了优化,向List中插入和删除元素的速度较快,随机访问则相对较慢。随机访问是指检索位于特定索引位置的元素。LinkedList单独具有addFirst()、addLast()、getFirst()、getLast()、removeFirst()和removeLast()方法,这些方法使得LinkedList可以作为堆栈、队列和双向队列使用。10List的用法•向列表中加入元素ListIntegerlist=newArrayListInteger();list.add(newInteger(3));list.add(newInteger(4));list.add(newInteger(3));list.add(newInteger(2));•List的get(intindex)方法返回集合中由参数index指定的索引位置的对象,第一个加入到集合中的对象的索引位置为0。以下程序依次检索出集合中的所有对象:for(inti=0;ilist.size();i++)System.out.print(list.get(i)+);11对List中的元素进行自然排序ListIntegerlist=newArrayListInteger();list.add(newInteger(3));list.add(newInteger(4));list.add(newInteger(3));list.add(newInteger(2));Collections.sort(list);for(inti=0;ilist.size();i++)System.out.print(list.get(i)+);12Map(映射)•Map(映射)是一种把键对象和值对象进行映射的集合,它的每一个元素都包含一对键对象和值对象。•向Map集合中加入元素时,必须提供一对键对象和值对象,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。•接口Map提供了根据关键字找对应的值的方法get(),定义如下:–Objectget(Objectkey)13Map(映射)•接口Map还提供了设置关键字和对应值的方法put(),定义如下:–Objectput(Objectkey,Objectvalue)14Map的用法•以下程序通过Map的put(Objectkey,Objectvalue)方法向集合中加入元素,通过Map的get(Objectkey)方法来检索与键对象对应的值对象:MapString,Stringmap=newHashMapString,String();map.put(1,Monday);map.put(2,Tuesday);map.put(3,Wendsday);map.put(4,Thursday);Stringday=map.get(2);//day的值为“Tuesday”15第16页15.0Java集合框架-入门ArrayList数据组织类似数组,顺序存放可以动态更改长度效率比数组低通过下标访问使用场合简单的存放一组列表对象,存放后很少修改,移动。学生1学生2学生3学生4学生5学生6学生7学生8学生9学生10第17页15.0Java集合框架-入门ArrayList最常用方法booleanadd(Ee)将指定的元素添加到此列表的尾部。Eget(intindex)返回此列表中指定位置上的元素booleanisEmpty()如果此列表中没有元素,则返回trueEremove(intindex)移除此列表中指定位置上的元素。voidclear()移除此列表中的所有元素。提示学生E不用深究实例演示以上几个方法,并让学生自己练习一下第18页15.0Java集合框架-入门HashMap数据组织通过hash算法(初期不需了解)无固定顺序存放通过键值访问使用场合知道集合中对象的某个属性(键值),希望得到整个对象。比如,通过学生的学号,取得学生对象。st5st4st3st6王丽李四杨军李涛第19页15.0Java集合框架-入门HashMap最常用方法Vput(Kkey,Vvalue)在此映射中关联指定值与指定键。Vget(Objectkey)返回指定键在此标识中所映射的值。booleanisEmpty()如果此映射不包含键-值映射关系,则返回true。Vremove(Objectkey)如果此映射中存在该键的映射关系,则将其删除。voidclear()从此映射中移除所有映射关系。提示学生K,V两个关键字不用深究实例演示以上几个方法,并让学生自己练习一下第20页15.0Java集合框架第21页15.1Collection接口•用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。•(1)单元素添加、删除操作:•booleanadd(Objecto):将对象添加给集合•booleanremove(Objecto):如果集合中有与o相匹配的对象,则删除对象o•(2)查询操作:•intsize():返回当前集合中元素的数量•booleanisEmpty():判断集合中是否有任何元素•booleancontains(Objecto):查找集合中是否含有对象o•Iteratoriterator():返回一个迭代器,用来访问集合中的各个元素•(3)组操作:作用于元素组或整个集合•booleancontainsAll(Collectionc):查找集合中是否含有集合c中所有元素•booleanaddAll(Collectionc):将集合c中所有元素添加给该集合•voidclear():删除集合中所有元素•voidremoveAll(Collectionc):从集合中删除集合c中的所有元素•voidretainAll(Collectionc):从集合中删除集合c中不包含的元素•(4)Collection转换为Object数组:•Object[]toArray():返回一个内含集合所有元素的array•Object[]toArray(Object[]a):第22页15.2Iterator接口•Collection接口的iterator()方法返回一个Iterator。Iterator接口方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection中除去适当的元素。•1)booleanhasNext():判断是否存在另一个可访问的元素•Objectnext():返回要访问的下一个元素。如果到达集合结尾,则抛出NoSuchElementException异常。•(2)voidremove():删除上次访问返回的对象。第23页15.3List接口(1)•List接口继承了Collection接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。•面向位置的操作包括插入某个元素或Collection的功能:•voidadd(intindex,Objectelement):在指定位置index上添加元素element•booleanaddAll(intindex,Collectionc):将集合c的所有元素添加到指定位置index•Objectget(intindex):返回List中指定位置的元素•intindexOf(Objecto):返回第一个出现元素o的位置,否则返回-1•intlastIndexOf(Objecto):返回最后一个出现元素o的位置,否则返回-1•Objectremove(intindex):删除指定位置上的元素•Objectset(intindex,Objectelement):用元素element取代位置index上的元素,并且返回旧的元素第24页15.4List接口(2)•List接口不但以位置序列迭代的遍历整个列表,还能处理集合的子集:•ListIteratorlistIterator():返回一个列表迭代器,用来访问列表中的元素•ListIteratorlistIterator(intindex):返回一个列表迭代器,用来从指定位置index开始访问列表中的元素•ListsubList(intfromIndex,inttoIndex):返回从指定位置fromIndex(包含)到toIndex(不包含)范围中各个元素的列表视图•『对子列表的更改(如add()、remove()和set()调用)对底层List也有影响。』第25页15.5LinkedList类和ArrayList类•在“集合框架”中有两种常规的List实现:ArrayList和LinkedList。使用两种List实现的哪一种取决于您特定的需要。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList提供了可选的集合。但如果,您要频繁的从列表的中
本文标题:Java课程16_集合
链接地址:https://www.777doc.com/doc-5317476 .html