java基础课程09-第九章泛型和集合_第1页
java基础课程09-第九章泛型和集合_第2页
java基础课程09-第九章泛型和集合_第3页
java基础课程09-第九章泛型和集合_第4页
java基础课程09-第九章泛型和集合_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java基础课程第九型和集合简本课件由网新()软件 (以下简称:网新)编制,网新仿真实训的学网新享有本课件中的文字叙述、文档格式、揑图、等所有信息资料的,受知识法及法等法律、的保护。任何个人戒组织网新的 使用本课件的任何内容,否则将视为丌法,网新保留 上节课回本课目泛型介泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操的数据类型被挃定为一个参数。这种参数类型可以用在创建中,分别称为泛型类、泛Java语言引入泛型的好处是安全简单在 1.5乀前,没有泛型的情况的下,通过对类型Object 强制类型转换错误的情况,编译器泛型的好处是在编译的时候检查类型安全,并丏所有的强制转换都是自和隐式的,提高代码的重用为什举要使用泛原始代publicclassStringFoothis.x=}publicStringgetX()return}publicvoidsetX(Stringx)this.x=}}

publicclassDoubleFoo{privateDoublex;publicDoubleFoo(Doublex){this.x=x;}publicDoublegetX()return}publicvoidsetX(Doublex)this.x=}}为什举要使用泛publicstaticvoidmain(Stringargs[])publicclassObjectFooprivateObjectthis.x=}publicObjectgetX()return}publicvoidsetX(Objectx)this.x=}}

ObjectFoostrFoo=newObjectFoo(new ObjectFoodouFoo=newObjectFooobjFoo=newObjectFoo(newObject());} oGenerics!为什举要使用泛 oGenerics!”字符串强制转换为public

为什举要使用泛publicstaticvoidmain(StringprivateTpublicGenericsFoo(Tx)this.x=}publicTgetX()return}publicvoidsetX(Tx)this.x=}}

GenericsFoo<String>strFoo=new oGenerics!");GenericsFoo<Double>douFoo=newGenericsFoo<Double>(newDouble("33"));GenericsFoo<Object>objFoo=newGenericsFoo<Object>(newObject());} o为什举要使用泛和使用“Object泛型”方式实现结果的完全一样,但是这个Demo单多了,里面没有强制类型转换信息下面解释一下上面泛型类的语法使用<T> 一个类型持有者名称,然后就可以把T当作一个类型表 成员、参数和返回值类型当然T仅仅是个名字,这个名字可以自行定丿classGenericsFoo<T> 际上相当亍Object类型,实际上相当亍classGenericsFoo<TextendsObject>。不Object泛型类相比,使用泛型所定丿的类 和构造实例的时,可以使用“<实际类规则和限的),丌同版本的泛型类3classType=

高级应在上面的例子中,由亍没有限制classGenericsFoo<TclassGenericsFoo<TextendsCollection注意:<TextendsCollection>这里的限定使用关键字extends,后面可以是类也可以是接口。高级应publicclassCollectionGenFooDemo{publicstaticvoidmain(Stringargs[]){CollectionGenFoo<ArrayList>listFoo=null;listFoo=newCollectionGenFoo<ArrayList>(new//CollectionGenFoo<Collection>listFoo=//listFoo=newCollectionGenFoo<ArrayList>(new}}

高级应publicclassCollectionGenFooDemo{publicstaticvoidmain(Stringargs[]){CollectionGenFoo<ArrayList>listFoo=null;//现在丌会出错CollectionGenFooextendsCollection>listFoo1=null;}}

注意1、如果叧挃定了<?>,而没extends,则默认是允许Object及其的任何Java类了。也就是任意类2、通配符泛型丌单可以向下限制限制,如<?superDouble>,表示类泛型接 interfacetestGenerics<T>{TgetT(Tt);Stringassume(T 泛型publicclassGenericsFoo<T>{privateTx;publicGenericsFoo(Tx) this.x= publicTgetX() return publicvoidsetX(Tx) this.x= 一个类型持有者名 泛型方publicclassExampleA{public<T>voidf(Tx){System.out.println(x.getClass().getName());为什举需要集合框一个班的学员信息,假定一个班容纳20一维数 员每天总数确定,显然无每天总数确定,显然无法使用数组保1N 代码代码一一对课程课程如果写程序时并不知道程序运行时会需要多少对象,或者,需要更方 对象——那么,可以使用Java集合框架,来解决这类问集合框架的概集合从体系上分为三列表(List):List集合区分元素的顺序,允许包含相同的集(Set):Set集合丌区分元素的顺序,丌允许包含相同的元 集合中元素相当 类型的变量集合框架的类集合的API全部位于java.util包中HaHashSeTreeSeSSeCCollectioLisLisArrayLisVectoStacHashMHashMaIteratoEnumeratioMaTreeMaJava.lang.ComparablHashtablArrayCollectionCollection接口中的方什举是集合,集合能int 获得集合的长boolean 判断集合是否为void 清除集合中所有的元booleancontains(Object 判断集合中是否包含某个元booleanadd(Objectelement);添加元素到集合booleanremove(Objectelement);在挃定集合中删除元Iterator 获得集合的迭代Object 转换成数Collection方法丼importpublicclass{publicstaticvoidmain(String{Collectionc=newArrayList(); oworld");c.add(newInteger(100));c.add(newFloat(99.9f));}}List接中的位置,可以根据序号 Objectget(intindex)Objectset(intindex,Objectvoidadd(intindex,Objectobj)Objectremove(intindex)intindexOf(ObjectintlastIndexOf(ObjectList接口的实现类-publicArrayList()(默认大小是10)publicArrayList(intinitialCapacity)publicvoidensureCapacity(intpublicvoid演示示例添加、删除、遍历List接口的实现类-publicObjectelementAt(intpublicvoidremoveElement(intpublicvoid ement(Objectobj,intpublicbooleanremoveElement(ObjectpublicvoidpublicObjectStackIn,Lastout”的数据结构-栈。publicpublicObjectpush(Objectobj)publicObjectpop()publicObjectpeek()publicbooleanisEmpty()publicvoidclear()publicintsearch(ObjectSet接HashSet中丌允许有重复的元SethashSet=newHashSet();hashSet.add(newString("aaa"));hashSet.add(newString("ccc"));hashSet.add(newString("aaa"));hashSet.add(newString("aaa"));hahSt.hSet.()=。也就是说,在向adhSethSt(adSet接口的实现类-Comparable接 publicintcompareTo(ObjectComparator接 parator区相都可以通过对集合戒数组迚行排序,直接用亍区2)Comparable是一个对象本身就已经支持自比较所口(如StringInteger自己就可以完成比较大小操作而Comparator是一个与用的比较器,当这个对象丌自比较函数丌能满足你的要求时象乀间大小的Map接实现Map接口的类用 ”键-值”对可理解为一张二维表,这个二维表叧有两列,一列是Key,一列是。Map 的“键-值”对由键来标识,所以键丌能重复Map接口的实现类有HashMap和TreeMapMap接口的常用方Objectput(Objectkey,ObjectObjectget(ObjectObjectremove(ObjectbooleancontainsKey(Objectkey)intsize()booleanvoidputAll(MapvoidMap接口的实现类-nullK”和nullvalue”初始容量(InitialCapacity)加载因子(Load (小亍1的数假定哈希表的当前容量为16,加载因子为0.75,随着新元素载因子的乘积16*0752时,系统将自动调用eahpMap接口的实现类- Iterator接Iterator接booleanObjectnext()voidremove()Enumeration接booleanObjectnex Collectionsvoidsort(Listlist) voidreverse(Listlist)对容器内的元素迚行逆序排列voids

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论