您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 清华大学郑莉最新课件(2014版)Java第7章
Java语言程序设计(第2版)第7章对象群体的组织郑莉Java语言程序设计(第2版),郑莉,清华大学2目录•7.1对象数组•7.3集合(Collection,Map)•7.4本章小结Java语言程序设计(第2版),郑莉,清华大学37.1对象数组•数组▫在Java提供的存储及随机访问对象序列的各种方法中,数组是效率最高的一种类型检查边界检查▫优点数组知道其元素的类型编译时的类型检查大小已知▫代价数组对象的大小是固定的,在生存期内大小不可变Java语言程序设计(第2版),郑莉,清华大学4•对象数组▫数组元素是类的对象▫所有元素具有相同的类型▫每个元素都是一个对象的引用7.1对象数组(续)Java语言程序设计(第2版),郑莉,清华大学5•在声明和定义数组的同时对数组元素进行初始化,例如:▫BankAccount[]accounts={newBankAccount(“Zhang,100.00),newBankAccount(“Li,2380.00),newBankAccount(“Wang,500.00),newBankAccount(“Liu,175.56),newBankAccount(“Ma,924.02)};•先定义再初始化,需要经过两步:▫首先给数组分配空间typearrayName[]=newtype[arraySize];▫然后给每一个数组元素分配空间arrayName[0]=newtype(paramList);…arrayName[arraySize-1]=newtype(paramList);7.1对象数组(续)——对象数组的初始化Java语言程序设计(第2版),郑莉,清华大学67.3集合•数组的优点▫是Java提供的随机访问对象序列的最有效方法▫是一个简单的线性序列,访问元素的速度较快•数组的缺点▫大小自创建以后就固定了,在其整个生存期内其大小不可改变▫数组元素只能是同一类型•集合▫可动态改变其大小▫可在序列中存储不同类型的数据Java语言程序设计(第2版),郑莉,清华大学7•集合▫把具有相同性质的一类东西,汇聚成一个整体▫在Java2中有很多与集合有关的接口及类▫它们被组织在以Collection及Map接口为根的层次结构中,称为集合框架▫在Java2之前,在Java1.0/1.1中,没有完整的集合框架。只有一些简单的可以自扩展的容器类VectorHashtable7.3集合(续)Java语言程序设计(第2版),郑莉,清华大学87.3.1Java集合框架•集合框架(JavaCollectionsFramework)▫为表示和操作集合而规定的一种统一的标准的体系结构▫提供了一些现成的数据结构可供使用,程序员可以利用集合框架快速编写代码,并获得优良性能▫包含三大块内容对外的接口:表示集合的抽象数据类型,使集合的操作与表示分开接口的实现:指实现集合接口的Java类,是可重用的数据结构对集合运算的算法:是指执行运算的方法,例如在集合上进行查找和排序7.3集合Java语言程序设计(第2版),郑莉,清华大学9•集合框架接口▫声明了对各种集合类型执行的一般操作▫包括Collection、Set、List、SortedSet、Map、SortedMap▫基本结构如图7.3集合7.3.1Java集合框架(续)——对外的接口Java语言程序设计(第2版),郑莉,清华大学10•类层次如图,包括4个接口、4个抽象类及6个具体类CollectionAbstractCollectionVectorArrayListStackListSetSortedSetAbstractSetAbstractListAbstractSequentialListHashSetTreeSetLinkedList7.3集合7.3.1Java集合框架(续)——Collection接口Java语言程序设计(第2版),郑莉,清华大学11•Collection接口▫声明时可以使用一个参数类型,即CollectionE▫声明了一组操作成批对象的抽象方法:查询方法、修改方法▫查询方法intsize()–返回集合对象中包含的元素个数booleanisEmpty()–判断集合对象中是否还包含元素,如果没有任何元素,则返回truebooleancontains(Objectobj)–判断对象是否在集合中booleancontainsAll(Collectionc)–判断方法的接收者对象是否包含集合中的所有元素7.3集合7.3.1Java集合框架(续)——Collection接口Java语言程序设计(第2版),郑莉,清华大学12▫修改方法包括booleanadd(Objectobj)–向集合中增加对象booleanaddAll(Collection?c)–将参数集合中的所有元素增加到接收者集合中booleanremove(Objectobj)–从集合中删除对象booleanremoveAll(Collectionc)-将参数集合中的所有元素从接收者集合中删除booleanretainAll(Collectionc)–在接收者集合中保留参数集合中的所有元素,其它元素都删除voidclear()–删除集合中的所有元素7.3集合7.3.1Java集合框架(续)——Collection接口Java语言程序设计(第2版),郑莉,清华大学13•Set接口▫扩展了Collection▫禁止重复的元素,是数学中“集合”的抽象▫对equals和hashCode操作有了更强的约定,如果两个Set对象包含同样的元素,二者便是相等的▫实现它的两个主要类是哈希集合(HashSet)及树集合(TreeSet)•SortedSet接口▫一种特殊的Set▫其中的元素是升序排列的,还增加了与次序相关的操作▫通常用于存放词汇表这样的内容7.3集合7.3.1Java集合框架(续)——Set、SortedSet接口Java语言程序设计(第2版),郑莉,清华大学14•List接口▫扩展了Collection▫可包含重复元素▫元素是有顺序的,每个元素都有一个index值(从0开始)标明元素在列表中的位置▫在声明时可以带有一个参数,即ListE▫实现它的四个主要类是VectorArrayList:一种类似数组的形式进行存储,因此它的随机访问速度极快LinkedList:内部实现是链表,适合于在链表中间需要频繁进行插入和删除操作栈Stack7.3集合7.3.1Java集合框架(续)——List接口Java语言程序设计(第2版),郑莉,清华大学15•Map接口▫不是Collection接口的继承▫用于维护键/值对(key/valuepairs)▫描述了从不重复的键到值的映射,是一个从关键字到值的映射对象▫其中不能有重复的关键字,每个关键字最多能够映射到一个值▫声明时可以带有两个参数,即MapK,V,其中K表示关键字的类型,V表示值的类型•SortedMap接口▫一种特殊的Map,其中的关键字是升序排列的▫与SortedSet对等的Map,通常用于词典和电话目录等▫在声明时可以带有两个参数,即SortedMapK,V,其中K表示关键字的类型,V表示值的类型7.3.1Java集合框架(续)——Map、SortedMap接口7.3集合Java语言程序设计(第2版),郑莉,清华大学16•接口的实现▫Collection没有直接的实现,只是作为其他集合接口的最小公分母▫除Collection以外,其余五个接口都有实现▫主要的实现有SetHashSetSortedSetTreeSetListVector/ArrayList/LinkedListMapHashMapSortedMapTreeMap7.3.1Java集合框架(续)——接口的实现7.3集合Java语言程序设计(第2版),郑莉,清华大学17•对集合运算的算法▫大多数算法都是用于操作List对象▫有两个(min和max)可用于任意集合对象•排序算法sort▫对List重新排序,使其中的元素按照某种次序关系升序排列▫有两种形式简单形式只是将元素按照自然次序排列第二种形式需要一个附加的Comparator对象作为参数,用于规定比较规则,可用于实现反序或特殊次序排序7.3.1Java集合框架(续)——对集合运算的算法7.3集合Java语言程序设计(第2版),郑莉,清华大学18•洗牌算法shuffle▫其作用与排序算法恰好相反,它打乱List中的任何次序。也就是说以随机方式重排元素,任何次序出现的几率都是相等的▫在实现偶然性游戏的时候,这个算法很有用,例如洗牌•常规数据处理算法▫reverse:将一个List中的元素反向排列▫fill:用指定的值覆写List中的每一个元素,这个操作在重新初始化List时有用▫copy:接受两个参数,目标List和源List,将源中的元素复制到目标,覆写其中的内容。目标List必须至少与源一样长,如果更长,则多余的部分内容不受影响7.3.1Java集合框架(续)——对集合运算的算法7.3集合Java语言程序设计(第2版),郑莉,清华大学19•查找算法binarySearch▫使用二分法在一个有序的List中查找指定元素▫有两种形式第一种形式假定List是按照自然顺序升序排列的第二种形式需要增加一个Comparator对象,表示比较规则,并假定List是按照这种规则排序的。•寻找最值——用于任何集合对象▫min和max算法返回指定集合中的最小值和最大值▫这两个算法分别都有两种形式简单形式按照元素的自然顺序返回最值另一种形式需要附加一个Comparator对象作为参数,并按照Comparator对象指定的比较规则返回最值7.3.1Java集合框架(续)——对集合运算的算法7.3集合Java语言程序设计(第2版),郑莉,清华大学20•Arrays类▫Java集合框架提供了一套专门用于操作数组的实用方法,它们作为静态方法存在该类中▫还包括可以将数组视为列表(List)的静态工厂▫常用方法fill(type[]a,typeval):给数组填充,就是简单地把一个数组全部或者某段数据填成一个特殊的值equals(type[]a,type[]b):实现两个数组的比较,相等时返回truesort(type[]a):对数组排序binarySearch():对数组元素进行二分法查找Arrays.asList(Object[]a):实现数组到ArrayList的转换7.3.1Java集合框架(续)——数组实用方法7.3集合Java语言程序设计(第2版),郑莉,清华大学21•数组的填充和复制importjava.util.*;publicclassCopyingArrays{publicstaticvoidmain(String[]args){int[]i=newint[25];int[]j=newint[25];Arrays.fill(i,47);Arrays.fill(j,99);System.arraycopy(i,0,j,0,i.length);int[]k=newint[10];Arrays.fill(k,103);System.arraycopy(i,0,k,0,k.length);Arrays.fill(k,103);System.arraycopy(k,0,i,0,k.length);Integer[]u=newInteger[10];Integer[]v=newInteger[5];Arrays.fill(u,newInteger(47));Arrays.fill(v,newInteger(99));System.arraycopy(v,0,u,u.length/2,v.length);}}JDK1.5,可使用Arrays.toString函数方便的显示出数组的内容7.3.1Java集合框架(续)——数组实用方法7.3集合Java语言程序设
本文标题:清华大学郑莉最新课件(2014版)Java第7章
链接地址:https://www.777doc.com/doc-3422968 .html