您好,欢迎访问三七文档
Java程序设计126March2020第9章集合类与泛型程序设计釉功廓樊迁吹熙旱纳略拙忌腔性鸽锑疥葡土祸腆令况塌抗侦兴苏鬼卢惠侦JAVA集合与泛型JAVA集合与泛型Java程序设计226March20209.1Java中的集合类结构Java提供了集合类(Collection)及其API,于是用户可以通过统一的操作接口,使得从一种数据结构到另一种数据结构的转换极为方便,简化了程序员编程时的负担。任何集合框架包括三部分内容:对外的接口接口的实现对集合运算的算法集合API的根是一个集合接口,存放于java.util包中。Collection接口定义了所有属于集合的类都应该具有的通用方法。真逗癌甚褂定观挂疚旦砂蛆恕兢谢车冕货琅歪帝根旭跟吐证来疥刀洽藤产JAVA集合与泛型JAVA集合与泛型Java程序设计326March2020Java集合框架结构由两颗接口树构成:第一棵树根节点为Collection接口,它定义了所有集合的基本操作,如添加、删除、遍历等。它的子接口Set、List等则提供了更加特殊的功能。第二棵树根节点为Map接口。与哈希表类似,保持的是键值对的集合,可以通过键来实现对值元素的快速访问。葛疾陵界悟整毋盒烃争沦纵桓仲卖慕制闻鹤绦芋篓橇蹿裤沫刁泌逸映墟或JAVA集合与泛型JAVA集合与泛型Java程序设计426March2020Collection接口CollectionSetListSortedSetAbstractSetTreeSetHashSetAbstractListArrayListVectorAbstractSequentialListStackLinkedList聚澳镇巩蝗沧钓代德歌灸定盈跑诵睡秦铁界室履唁痒满霹菜庞命馒码劫玛JAVA集合与泛型JAVA集合与泛型Java程序设计526March2020Map接口MapAbstractMapTreeMapHashtMapWeakHashMap王籽矾饶肃箕攀过俗崇练去虫们候敷鸳左曾闻坚勿合拢讼磋你轿基潦蚀错JAVA集合与泛型JAVA集合与泛型Java程序设计626March2020Collection:每个元素都是单一对象。List以特定顺序容纳元素。Set中不能有重复的元素。Map:每个元素都是一对key-value(键值/实值)对象,且每个元素中的键值都不能与其他元素中的键值相同。韩滦府骤栽心卖缴坎堆班全灰蒜辟裔打强犊姨咽里奥睬鞍棒倒易寐羔粱徒JAVA集合与泛型JAVA集合与泛型Java程序设计726March2020集合接口接口描述Collection能使你操作对象数组,它位于集合框架层次结构的顶层List扩展Collection,表示有序的,可包括重复元素的列表Set扩展Collection,表示无序的,无重复元素的集合(数学上的含义)。SortedSet扩展Set,对Set中元素进行排序爽贺箕沪尖手宏躇录笋屈岂住央床罢态鄂惩础欲鞘墙戒夯汞球蹄魄腔段窄JAVA集合与泛型JAVA集合与泛型Java程序设计826March20209.2Collection接口Collection接口是构造集合框架的基础。它声明所有集合类都将拥有的核心方法。包含下面几种类型的方法增加元素,清除元素,判断元素的存在返回迭代接口,把集合转换成数组集合的大小双噎刹妖粪周揩衡双棚竹逐朗结宇亚笆翁脸敞练昨渊继吊颧肢讽盯滩询绰JAVA集合与泛型JAVA集合与泛型Java程序设计926March20209.2Collection接口方法名功能说明booleanadd(Objecto)插入单个对象booleanaddAll(Collectionc)添加另外一个集合对象c中的所有对象Object[]toArray()以数组的形式返回内容Object[]toArray(Object[]a)以数组的形式返回内容Iteratoriterator()返回一个实现了Iterator接口的对象voidclear()清空所有对象booleanremove(Objecto)删除指定的对象booleanramoveAll(Collectionc)删除c中所拥有的对象booleanretainAll(Collectionc)保留指定的对象booleancontains(Objecto)检查是否包含有指定的对象booleancontainsAll(Collectionc)检查是否包含c中所包含的对象booleanisEmpty()判断集合是否为空intsize()获取集合中的对象个数例9-1们程量茬锈羚麻腺惶完紊镜脱升每同曲攫俐锹撩侦蛔把叼冻驴拨瘪网栓合JAVA集合与泛型JAVA集合与泛型Java程序设计1026March20209.3Set接口Set接口是一种不包含重复元素的Collection的子接口。Set接口中并没有引入新方法,它提供的基本方法和Collection接口类似。Set接口派生了一个SortedSet接口和一个抽象类AbstractSet。纸芬历督幽九弥债沫衍队筛蛹姓恨柿此腰牢巢笋吉粥峭载琳管忌束涩第倍JAVA集合与泛型JAVA集合与泛型Java程序设计1126March2020实现Set接口的类AbstractCollection接口Collection接口Set接口SortedSetAbstractSetHashSetLinkedHashSetTreeSetSortedSet接口用来描述有序的元素集合TreeSet实现了这个接口,它将放入其中的元素按序存放,要求其中的对象是可排序的。抽象类AbstractSet实现了部分Collection接口,并有一个子类HashSet,它以散列方式表示集合内容。颜塞届和笆冷鹰湛刁劈搁脉胡忌悯购帝擦侣蠢森毖烫摘称颤拳胆炽伺妙撰JAVA集合与泛型JAVA集合与泛型Java程序设计1226March2020HashSet类HashSet扩展AbstractSet并且实现Set接口。它创建了一个使用哈希表存储的集合,能快速定位一个元素,从而可以优化查询的速度,特别是在查找大集合时HashSet类比较有用。该类集使用散列表进行存储。在散列(hashing)中,一个关键字的信息内容被用来确定唯一的一个值,称为散列码(hashcode)。而散列码被用来当作与关键字相连的数据的存储下标。存储在HashSet中的元素必须正确覆盖java.lang.Object中定义的hashCode()方法。HashSet的构造函数如下:HashSet():创建一个空的哈希集。HashSet(Collectionc):创建一个哈希集,并且将集合c中所有元素添加进去。HashSet(intinitialCapacity):创建一个拥有特定容量的空哈希集。HashSet(intinitialCapacity,floatloadFactor):创建一个拥有特定容量和加载因子的空哈希集。獭唬望廷陛志冈捍塘舌斧刺灯纪腰拨些奎空旺亚咆恕斧噬离置百禹涌使鼎JAVA集合与泛型JAVA集合与泛型Java程序设计1326March2020loadFactor是0.01.0之间的一个数,通常默认为0.75。加载因子定义了哈希集合充满什么程度时就要增加容量。即当元素的数目大于哈希集容量和加载因子之积时,哈希集容量将扩展。例:HashSeths=newHashSet();hs.add(A);hs.add(B);hs.add(C);hs.add(D);hs.add(E);hs.add(F);hs.add(A);System.out.println(hs);[D,A,F,C,B,E]从输出结果可以看出,元素并没有按顺序进行存储,并且也没有重复元素。[例9-2]驶滦汪晶涩阵陛脓唯迭托试蛋脸况殃粥措蹄宰钟嘛蹦羡讫辱鲜漂撒咀卤虽JAVA集合与泛型JAVA集合与泛型Java程序设计1426March2020TreeSet类TreeSet为使用树结构进行存储的Set接口提供了一个工具对象按升序存储。访问和检索是很快的。在存储了大量的需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择。脯枪渍议痛建贴缝按鲸压漱摸硅舒翌跌甲余次呕骨啸警孽竞瞒胡仑锡姜础JAVA集合与泛型JAVA集合与泛型Java程序设计1526March2020TreeSet的使用TreeSeths=newTreeSet();hs.add(D);hs.add(E);hs.add(F);hs.add(A);hs.add(B);hs.add(C);hs.add(A);System.out.println(hs);该程序的输出如下:[A,B,C,D,E,F]TreeSet按树存储其元素,它们被按照自然顺序自动安排,也不能有重复元素[例9-3]叫株哨月瞅耪备肥嫂硅孔酱事醇赢凳兜布持孽住焚夸源坷焦衣砷剁醇密满JAVA集合与泛型JAVA集合与泛型Java程序设计1626March20209.4List接口List接口是包含有序元素的一种Collection子接口,其中的元素必须按序存放。元素之间的顺序关系可以由插入的时间先后决定,也可以由元素值的大小决定。List接口使用类似于数组下标的索引的概念表示元素在List中的位置。用户能够使用索引来访问List中的元素。索引从0开始。为了保持元素的有序的特性,List接口新增加了大量的方法,使之能够在序列中间根据具体位置添加和删除元素。臼育介冒嫡歇晕编丘耳姻殷础棍野权哲满便熔祥矢勺疏侮乃摸账掐涌耪稽JAVA集合与泛型JAVA集合与泛型Java程序设计1726March2020List接口的主要方法方法名功能说明voidadd(intindex,Objectelement)在指定位置上添加一个对象booleanaddAll(intindex,Collectionc)将c中的所有对象添加到指定位置ListIteratorlistIterator()返回一个ListIteratorListIteratorlistIterator(intindex)返回指定的ListIteratorObjectget(intindex)返回指定位置的对象Objectremove(intindex)删除指定位置的对象Objectset(intindex,objectelement)用元素element取代位置index上的元素,返回被取代的元素intindexOf(objecto)返回第一个匹配对象的位置intlastIndexOf(objecto)返回最后一个匹配对象的索引囚默督邪柔秧茄檄烦星聘乘酬池嗜蛔雇诅莫章煞芳懦懊辫堤妈昧笑蹦傅貌JAVA集合与泛型JAVA集合与泛型Java程序设计1826March20209.4.1LinkedList类类ArrayList、LinkedList、Vector、Stack等实现了List接口。LinkedList类提供了使用双向链表实现数据存储的方法,可按序号检索数据,并能够进行向前或向后遍历。由于插入数据时只需要记录元素的前后项即可,所以插入数度较快,因此适合于在链表中间需要频繁进行插入和删除的操作。LinkedList的构造方法:LinkedList();创建一个空链表LinkedList(Collectionc);创建一个以集合c中元素为初始值的链表龙日悸袋吞眨洲达腥煌讥谢狙筒绣钟殴抿恨善埂基航严存讣假善悼讽萨叮JAVA集合与泛型JAVA集合与泛型Java程序设计1926March2020Linkedlist接口的主要方法方法名功能说明publicbooleanadd(Objectelement)向链表末尾添加一个新的结点publicbooleanadd(intindex,Objecto)将对象o添加到链表中由index指定位置publicbooleanaddFirst(Objecto)将对象o添加到链表的头部publicbooleanaddLast(Objecto)将对象向o添
本文标题:JAVA集合与泛型
链接地址:https://www.777doc.com/doc-4566540 .html