欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《对象的集合》PPT课件.ppt

    • 资源ID:5496897       资源大小:268.49KB        全文页数:39页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《对象的集合》PPT课件.ppt

    1,第八章对象的集合,2,主要内容,1、对象数组2、集合3、list接口4、Set,SortedSet接口5、Map,SortedMap接口6、迭代器(Iterator)参考李发致教材第七章,郑莉教材第七章,ThinkInJava第11章,3,1、对象数组,数组:在Java提供的存储及随机访问对象序列的各种方法中,数组是效率最高的一种,但数组的大小是固定的,只能用来表达一组同类型数据,在生存期内大小不可变。对象数组数组元素是类的对象所有元素具有相同的类型每个元素都是一个对象的引用,4,1.1对象数组的初始化,静态初始化:在声明和定义数组的同时对数组元素进行初始化,例如:BankAccount accounts=new BankAccount(“Zhang,100.00),new BankAccount(“Li,2380.00),new BankAccount(“Wang,500.00),new BankAccount(“Liu,175.56),new BankAccount(“Ma,924.02);,5,动态初始化:使用运算符new,需要经过两步:首先给数组分配空间type arrayName=new typearraySize;然后给每一个数组元素分配空间arrayName0=new type(paramList);arrayNamearraySize-1=new type(paramList);,6,1.2数组的操作java.util.Arrays,在java.util包中的Arrays类提供了一些操作数组的方法int binarySearch(type a,type key)对数组进行二分法查找如果key存在,则返回它在数组a中的位置如果不存在,则返回它的“-(插入位置-1)”void fill(type a,type val)给数组全部或某段数据填充成一个特殊的值,7,boolean equals(type a,type a2)两个数组大小相同,并且每一个元素相等两个null数组是相等的void sort(type a)void sort(type a,int fromIndx,int toIndex)void sort(type a,Comparatorc)void sort(type a,int fromIndx,int toIndex,Comparatorc)详细用法参看Java API,8,2、集合(Collection),Java中的数组只能保存固定数目的元素,且必须把所有需要的内存单元一次性的申请出来,而不能先创建数组再追加数组元素数量。所以在对象数量不明确的情况下,类型多样化的情况下,需要更复杂的方法来管理对象。,9,2.1Java集合框架(Collections Framework),集合计算机科学中有20多个标准的数据结构,如链表,二叉树,栈和hash表等。Java直接以类库的形式提供了其中的许多数据结构,这些数据结构可以存储对象的集合,并管理对象。数据结构和类库通称为Java的集合框架(Java Collections Framework)。,10,集合框架提供了一个通用的接口,其中给出了插入,删除等操作一系列方法声明。Java集合框架中有6种基本的数据结构。,11,List 按照一定次序排列的对象集,对象之间有次序关系,可以包含重复的对象。Set 无次序的对象集,但这些对象都是唯一的,不重复。SortedSet 按照升序排列元素的对象集。Queue JDK1.5引入的新特性,以储存处理之前需要暂存的数据元素,以先进先出(First In First out,FIFO)的方式处理。为线程编程提供帮助。以上四种均实现了Collection接口。,集合框架中的6种基本数据结构,12,Map map没有实现Collection接口,用于存储一群成对的对象,这些对象各自保持着“键-值”(key-value)对应关系。即一个是键(如人名),另一个是与键对应的值(如电话号码)。SortedMap 按键的升序排列的map。程序员首先应该从list,set,queue,map中做出选择,然后再根据性能和其他必要的特性,选用其中的具体类。,13,结构示意图,a,d,b,a,c,列表list,n,a,b,c,d,e,集合set,a,c,b,d,v23,v16,v9,v10,映射map,14,2.1.2集合框架层次collection接口,类层次如图,主要包括5个接口、5个抽象类及6个具体类,Collection,AbstractCollection,Vector,ArrayList,Stack,List,Set,SortedSet,AbstractSet,AbstractList,AbstractSequentialList,HashSet,TreeSet,LinkedList,Queue,AbstractQueue,15,2.1.2集合框架层次map,16,Collection接口声明了十几个抽象方法,用于增加,删除或查询数据结构。查询方法int size()返回集合对象中包含的元素个数boolean isEmpty()判断集合对象中是否还包含元素,如果没有任何元素,则返回trueboolean contains(Object obj)判断对象是否在集合中boolean containsAll(Collection c)判断方法的接收者对象是否包含集合中的所有元素,2.1.3Collection接口基本方法,17,修改方法包括boolean add(Object obj)向集合中增加对象boolean addAll(Collection c)将参数集合中的所有元素增加到接收者集合中boolean remove(Object obj)从集合中删除对象boolean removeAll(Collection c)-将参数集合中的所有元素从接收者集合中删除boolean retainAll(Collection c)在接收者集合中保留参数集合中的所有元素,其它元素都删除void clear()删除集合中的所有元素,18,3.1List接口:编程中较为常用的集合可包含重复元素元素是有顺序的,每个元素都有一个index值(从0开始)标明元素在列表中的位置实现它的四个主要类是Vector(legacy):Java1.0/1.1遗留下来的类,在Java1.0/1.1中唯一可以自我扩展的序列。如今基本上可以看作ArrayList栈Stack(legacy):也是Java1.0/1.1遗留下来的类,仅在一端进行插入或删除操作的线性表,以先进后出(First In last Out)的方式进行,3.List接口,19,ArrayList:由数组实现的一种list,因此它的随机访问速度极快,但是向list中插入与删除元素的速度很慢。LinkedList:由双向链表实现的一种list,适合于在list中间需要频繁进行插入和删除操作,但随机访问则相对较慢。提供了addFirst(),addLast(),getLast(),removeFirst()和removeLast()等方法,可用于实现栈和队列的操作。,20,3.2List接口常用方法,List接口在实现Collection接口的基础上又增加了大约10个基本的数据访问方法:Object get(int index);Object set(int index,E element);Object add(int index,E element);Object addAll(int index,Collection);Object remove(int index);int indexOf(Object o);int lastIndex(Object o);ListIterator listIterator();ListIterator listIterator(int index);List subList(int from,int to);,21,3.3ArrayList的使用,3.3.1创建一个ArrayListArrayList的常用方法同样适用于Vector,构造方法与Vector也类似ArrayList myList=new ArrayList();/初始化容量为10ArrayList myList=new ArrayList(int cap);/初始化容量为capArrayList myList=new ArrayList(Collection col);/以参数col中的元素进行初始化,22,3.3.2添加对象到ArrayList中,void add(Object obj)添加一个对象,如ArrayList teamList=new ArrayList();teamList.add(Zhang Wei);teamList.add(Li Hong);boolean addAll(Collection col)添加整个集合,如果接收者对象的结果有变化,则返回true,如ArrayList teamList=new ArrayList();teamList.add(Zhang Wei);teamList.add(Li Hong);ArrayList yourList=new ArrayList();yourList.addAll(teamList);,23,和更早版本的集合都有一个共同的缺点:一旦将某个对象添加到其中,该对象便失去了其原有的类型信息,集合中所容纳的元素其实只是一些指向Object对象的引用。也就是集合只保存没有类型特征的对象。,集合对其所容纳的对象类型没有任何限制,可以将任意类型的对象添加到同一集合中。从集合中取出对象时必须将其强制转换成正确的类型。,24,25,3.4泛型(Generics)集合,这样一来,从集合里取出对象需要强制类型转换,否则不安全,运行时出现错误。JDK1.5后编译器采用Generics来保证类型安全,在编译时自动检测出类型不匹配,显示编译警告。,JDK 1.5引入了泛型(Generics):从泛型集合中取出元素时不再需要进行强制类型转换。编译器会保证添加到集合中的元素一定是参数化类型(parameterized type)指定的类型。这和C+的Template class(类模板)具有同样的功能。,26,27,在类,接口,方法的定义时用无需指名元素具体类型,用一个通用名称(如type,E)代替;而在具体应用时再把元素赋予真正的类型名称。例:StackList.java,GenericClass.java所以JDK1.5要求创建一个集合时给出元素类型通用名称,或者直接指明元素具体类型名称,否则编译时将显示警告。,28,类型通用名称,按照惯例,类型通用名称命名为一个大写字母,常用的名称如下:E Element(广泛用于Java Collection Framework)K Key,键N Number,数T Type,类型V Value,值S,U,V等 第二,三,四个类型Java DocAPI中常出现这些名称的使用。,29,使用范型的Collections 例子,public class MyGenericCollection public static void main(String args)List myList=new ArrayList();/myList.add(A string);/This no longer compiles myList.add(new Integer(1);myList.add(new Integer(2);Integer x;for(int i=0;imyList.size();i+)x=myList.get(i);System.out.println(x);,30,可见上述例子使用通配符指明了具体类型:ArrayList list=new ArrayList();这样就无法编译通过,容易检测出错误。例:MyGenericCollection.java,31,继承关系下添加父类与子类对象到集合中,指定父类类型为存储类型,取出对象时无需强制类型转换。例:person1,32,3.5LinkedList的使用,LinkedList和ArrayList都实现了List接口,无论使用哪一个,程序都产生相同的结果,但LinkedList适合于在list中间需要频繁进行插入和删除操作。LinkedList可以用于实现栈和队列。栈的实现:例MyStack.java,33,Set接口适用于不允许出现重复的元素实现它的两个主要类是哈希集合(HashSet):用于快速检索树集合(TreeSet):采用自动升序方式存储元素,4、Set、SortedSet接口,34,SortedSet接口:一种特殊的Set其中的元素是升序排列的,还增加了与次序相关的操作通常用于存放词汇表这样的内容,35,Map接口:不是Collection接口的继承用于维护键/值对(key/value pairs)描述了从不重复的键到值的映射,是一个从关键字到值的映射对象其中不能有重复的关键字,每个关键字最多能够映射到一个值,5、Map、SortedMap接口,36,SortedMap接口一种特殊的Map,其中的关键字是升序排列的与SortedSet对等的Map,通常用于词典和电话目录等,37,6、迭代器Iterator,Iterator接口(1.2版,替代Enumeration)是一个对象,用于遍历并选择序列中的对象,是对Enumeration接口的改进具有如下三个实例方法,hasNext()判断是否还有元素next()取得下一个元素remove()将Iterator新近返回的(如next()返回的)元素删除,38,List还设计有更强大的ListIterator。利用Iterator访问每个元素。List cats=new ArrayList();Iterator e=cats.iterator();while(e.hasNext()System.out.println(“Cats has”+e.next();例:CatsAndDogs2.java删除集合中某些元素例:IteratorTest.java,39,JDK1.5后,Iterator的应用逐渐淡出,利用新的foreach语句,只需给出元素类型,循环变量及集合即可,可以简洁写出下列代码。for(Double d:c)System.out.println(“C has”+d);d为循环变量,c为集合。例:ForEachCollection.java,Foreach语言遍历整个集合,

    注意事项

    本文(《对象的集合》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开