- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章-集合讲述
目标 集合概述 集合框架 Java中对常用的数据结构和算法做了一些规范和实现。 所有抽象出来的数据结构和操作统称为Java集合框架 (Java Collection Framework,简称JCF)。 集合框架的引入给编程操作带来了如下的优势: 集合框架强调了软件的复用。集合框架通过提供有用的数据结构和算法,使开发者能集中注意力于程序的重要部分上 集合框架通过提供对有用的数据结构(动态数组、链接表、树和散列表等)和算法的高性能、高质量的实现使程序的运行速度和质量得到提高 集合框架必须允许不同类型的数据以相同的方式和高度互操作方式工作 集合框架允许扩展或修改 集合框架API易学易用 集合框架主要由一组用来操作对象的接口组成,不同接口描述一组不同数据类型 集合概述-1 Java的集合框架主要由一组用来操作对象的接口组成,不同接口描述一组不同数据类型。抽其核心,主要接口有:Collection、List、Set和Map。 简化框架图如下所示: 集合概述-2 Collection接口 Collection接口是构造集合框架的基础,用于表示任何对象的集合。该接口中声明了所有集合都拥有的核心方法,例如基本的添加、删除操作等,并且提供了一组操作成批对象的方法,还提供了支持查询操作如判断集合是否为空的方法等。 Collection在使用时需要注意以下事项: 其中几种方法可能会引发一个UnsupportedOperationException异常 当企图将一个不兼容的对象加入一个类集中时,将产生ClassCastException异常 Collection并没有get()方法来随机访问第几个元素。只能通过iterator()遍历元素 集合概述-3 List接口 List是最常用的一种集合。List接口继承了Collection接口,元素允许重复,以元素添加的次序来放置元素,不会重新排列。该接口不但能够对列表的一部分进行处理,还允许针对位置索引的随机操作。它的具体实现类常用的有ArrayList和LinkedList List在使用时需要注意以下事项: 如果集合不可更改,其中几个方法将引发一个UnsupportedOperationException异常 当企图将一个不兼容的对象加入一个类集中时,将产生ClassCastException异常 如果使用无效索引,一些方法将出IndexOutOfBoundsException异常 集合概述-4 Set接口 Set接口继承Collection接口,Set中的对象元素不能重复,其元素添加后采用自己内部的一个排列机制。Set接口没有引入新方法,可以说Set就是一个Collection,只是行为不同。它的常用具体实现有HashSet和TreeSet类 Map接口 Map接口没有继承Collection接口。Map接口用于维护键/值对(key/value)的集合,Map容器中的键不允许重复,而值可以是任意对象。Map有两种比较常用的实现:HashMap和TreeMap 集合概述-5 Collections和Arrays 集合框架中还有两个很实用的辅助类:Collections和Arrays Collections提供了对一个Collection类型的容器进行诸如排序、复制、查找和填充等一些非常有用的方法;Arrays则提供了针对数组进行类似操作的方法。 迭代器 Iterator接口 为了支持对Collection进行一致的遍历操作,Java的集合框架提供了Iterator接口,使用者可以采用一致的方式操作Collection,而不需知道这个Collection的具体实现类型。Iterator接口中的方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection中删除元素。 ListIterator接口 ListIterator接口继承Iterator接口,是列表迭代器,用以支持添加或更改底层集合中的元素,允许程序员双向访问、修改列表。ListIterator没有当前位置,光标位于调用previous和next方法返回的值之间,是一个长度为n的列表,有n+1个有效索引值。 List ArrayList ArrayList支持可随需要而调整的动态数组。其内部封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个capacity。这个capacity表示存储列表中元素的数组的容量。当元素添加到ArrayList时,它的capacity可根据需要的容量自动增加。在向一个ArrayList对象添加
文档评论(0)