版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java核心课件-第3章第3章 集合框架v熟悉java2之前的容器类的继承关系,熟练使用其中的类和接口;v熟悉java集合框架,熟练使用其中的相关类和接口;v熟练使用集合类的泛型用法。java核心课件-第3章v我们在解决问题时,通常需要选择一种数据结构;v本章主要讲述Java技术是如何帮助你建立进行重大编程时所需要的传统数据结构;v这就是“集合框架”,一个集合就是一组对象的容器。java核心课件-第3章3.1 java2之前的容器类v左图中两条线分别表示两种不同的数据结构:v第1条线:Vector代表线性结构,特点是元素有序存储,支持下标访问,元素在容器中可重复出现;v第2条线:Diction
2、ary代表映射结构,存储的是“健/值对”,特点是无序存储,不支持下标访问,通过健快速映射到值,其中健是唯一的,值可以不唯一,且所有键值不能为null。VectorStackDictionaryHashtablePropertiesjava核心课件-第3章3.1.1 长度和容量的概念v容量:能够存储元素个数的能力,通常会自动增加;v长度:实际存储的元素个数;3.1.1 Enumeration接口vEnumertation接口提供了一种抽象机制,用于访问任意一个容器中的各个元素;v目前这个接口已经基本被Iterator接口替代了。java核心课件-第3章3.2 集合框架概述v从图中可以看出,整个集
3、合框架是建立在两个接口之上,它们是Collection和Map,一共包含四种类型的集合,它们是List、Queue、Set、Map;vList代表线性结构,特点是元素有序存储,支持下标访问,元素在容器中可重复出现;vQueue代表队列结构,特点是先进先出,不支持下标访问;vSet代表集合结构,特点是无序存储,不支持下标访问,元素在集合中是唯一的;vMap代表映射结构,特点是,通过键/值对存储。IterableCollectionQueueListSetMapIteratorListIteratorjava核心课件-第3章3.3 集合框架的迭代器vJava每个Collection集合都提供了it
4、erator()方法来返回一个迭代器;v通过反复调用next方法,可以逐个访问集合中的各个元素;v如果到了集合尾部,next方法将抛出一个NoSuchElementException异常;v由上图可以看出:应该将java迭代器看成是位于各个元素之间的,当调用next方法时,迭代器便越过下一个元素,并返回它刚刚越过的那个元素的引用;v当迭代器刚创建时,它位于第一个元素之前,并不指向任何一个元素。3.3.1 Iterator接口返回元素迭代器java核心课件-第3章3.3.2 ListIterator 接口v它是Iterator接口的子接口;v除了继承了其父接口的正向遍历方法next外,还提供了反
5、向遍历方法previous;v因此它是一个双向迭代器;v还提供了add方法添加元素。vList a = new LinkedList();a.add(Amy);a.add(Carl);a.add(Erica);Iterator aIter = a.iterator();ListIterator aLIter = a.listIterator();java核心课件-第3章3.4 Collection接口vCollection接口是集合框架的基础;声明了多数集合类都有的核心方法;v因此应当熟悉这些方法;v见书或api文档。java核心课件-第3章3.5 List结构v线性表结构;v重载了父接口的a
6、dd等方法,增加了set、get等方法,以支持下标访问;vList中的元素可以重复出现。ListListIteratorQueueAbstractListAbstractSequentialListCopyOnWriteArrayListArrayListVectorStackLinkedListjava核心课件-第3章3.5.3 Vector类vVector又称“向量”,实现了一个动态数组的功能。它的特点是:v底层以数组实现,支持下标运算,下标从0开始;v容易维护元素的顺序,是按添加的顺序进行维护的;v所有方法都是同步的,是线程安全的;v通常扩展容量的方式是倍增的;v与数组的区别:它的容量可
7、变,数组的容量是定的。java核心课件-第3章3.5.4 Stack类vStack类是实现了标准的后进先出的栈,是Vector的子类;vVector可用的方法,Stack都可用,但实际应用中尽量不使用继承的方法;v下标从1开始,栈顶下标为1,栈底下标为size;vpush是压栈,pop是出栈。栈栈顶栈栈顶数据栈栈顶栈栈顶数据入栈操作 出栈操作 java核心课件-第3章ArrayList类v其特点是:v底层是以数组实现的,所以它适合反复遍历,不适合作频繁的元素插入和删除操作;v可以动态的增减大小,当长度超过时,集合自动增加原来容量的50%,删除对象时,集合自动变小;v不是同步的。java核心课件
8、-第3章3.5.8 LinkedList类v与ArrayList不同的是:LinkedList是链表结构;v因此它的删除、插入方便;v底层是双向链表实现的,适合频繁的插入和删除;v在JDK5.0中,其实现了Queue接口。链表头部节点数据后继前驱节点数据后继前驱java核心课件-第3章3.6 比较器3.6.1 Comparable接口vComparable接口强行对实现它的每个类的对象进行整体排序;v此排序被称为该类的自然排序,其方法被称为它的自然比较方法;v实现此接口的对象列表可以通过Arrays.sort, collections.sort等方法进行自动排序,是它们的默认比较器;v其方法:
9、public int compareTo(T o);3.6.2 Comparator接口v此接口的方法强行对某些对象collection进行整体排序;v可以将Comparator作为参数传递给sort方法,从而允许在排序顺序上实现精确控制;v还可以使用Comparator来控制TreeSet等数据结构的顺序;v其方法:public int compare(T o1,To 2);java核心课件-第3章3.7 Queue结构QueueArrayBlockingQueueDelayQueueLikedBlockingQueuePriorityBlockingQueueSynckronousQueu
10、ePriorityQueueConcurrentLinkedQueueBlockingQueueAbstractQueuejava核心课件-第3章3.7.1 Queue接口v如下图所示,队列通常以先进先出(FIFO)的方式排列各个元素,不过优先级队列例外;v优先级队列根据提供的比较器或元素的自然顺序对元素进行排序;v无论使用哪种排序方式,队列的头都是调用remove和poll方法所移除的元素;vFIFO队列中,所有新元素都插入队尾。a1 a2 a3 an队尾队尾队头队头入列入列出列出列java核心课件-第3章3.8 Set结构vSet结构的特点:元素在集合中无序存储;集合中不允许存在相同的元素
11、。SetSortedSetAbstractSetTreeSetHashSetCopyOnWriteArraySetEnumSetE extends EnumLinkedHashSetjava核心课件-第3章3.8.4 EnumSetE extends Enum类vEnumSet是与枚举类型一起使用的专用Set实现;v由iterator方法返回的迭代器按枚举声明常量的顺序遍历这些元素;v可以防止枚举中出现重复值。java核心课件-第3章3.8.5 HashSet类vHashSet创建一个使用哈希表存储的集合;vHashSet的特点:它是一种把查找时间看得很重要的Set;集合中元素是无序存放的;所
12、有的值必须覆盖hashCode和equals方法v关于hashCode和equals方法:系统在判断是否加入相同对象时,会调用对象的hashCode和equals方法来判断;在Object类中它们返回的或比较的都是对象的内存地址,不能反映它们是否是相同对象,因此都必须覆盖;好的hashCode方法所产生的值应该均匀分布。java核心课件-第3章TreeSet类v实现SortedSet接口,可以实现对集合自动排序,必须满足以下两点中的其一:1、创建集合时不指定比较器时,集合中的对象必须实现Comparable接口,按其指定的方式排序;2、创建集合时指定比较器Comparator,则按指定的比较器
13、的方式排序;v注意匿名内部类的使用。java核心课件-第3章3.9 Map结构MapMap.EntryAbstractMapWeekHashMapIdentityHashMapEnumMapTreeMapConcurrentHashMapHashMapLinkedHashMapSortedMapConcurrentMapDictionaryHashtablePropertiesjava核心课件-第3章3.9.1 MapvMap(映射)是一种把键对象和值对象进行映射的集合,它的每一个元素都包含一对键对象和值对象;v向Map集合中加入元素时,必须提供一对键对象和值对象,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象;vMap.Entry接口是Map的内部接口,它封装了一个key/value,也就是说一个Map.Entry对象
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年常春藤项目可行性研究报告(市场调查与数据分析)
- 湖北省黄石市大冶市还地桥教联体2026-2027学年九年级上学期10月阶段检测历史试题(含答案)
- 5-Pyridin-3-yloxy-isophthalic-acid-生命科学试剂-MCE
- 编一个数学试题及答案
- 2026年废物处理行业绿色供应链优化报告
- 2026年体育用品行业发展趋势与竞争格局报告
- 2026年农业现代化发展报告及未来五年行业人才需求预测
- 2026年搬运车创新报告及未来五至十年行业发展趋势报告
- 2026年汽车行业本地生活团购报告:到店体验、到家服务趋势分析
- 2026年化妆品行业清洁生产技术分析报告
- 2026年江西省建筑设计研究总院集团有限公司第二批岗位招聘11人考试备考题库及答案解析
- 2026宜宾市属国有企业人力资源中心宜宾天原科创设计有限公司公开招聘考试备考题库及答案解析
- 统编版九年级上册 道德与法治 第二单元《进入新时代》单元检测试卷(含答案)
- 八年级英语上学期期中押题卷(深圳专用)原卷版
- 建筑工程技术生涯发展展示
- SL721-2015水利水电工程施工安全管理导则
- 静脉输液治疗的安全管理与风险防范
- LY/T 1874-2010中国东北林区森林可持续经营指标
- 朝鲜半岛文化
- GB/T 32891.2-2019旋转电机效率分级(IE代码)第2部分:变速交流电动机
- GB/T 17518-2012化工产品中硅含量测定的通用方法还原硅钼酸盐分光光度法
评论
0/150
提交评论