1、深入集合框架(上),Java高级编程 第二章,课程目标,理解集合 了解集合的体系结构 使用ArrayList 编写自己的ArrayList,理解集合,集合是一个保存其他对象的对象,更准确的说,集合是一种存储机制,可以添加和删除元素以及访问甚至更新元素的值。,集合的体系结构,Collection接口,Collection接口除了实现映射的集合类之外的所有集合类定义了一些方法。这个接口不会引用项目在集合中可能存在的任何顺序。,Collection接口中的方法,List接口,List集合类型描述了一种按位置存储数据的对象,第一个元素位于位置0,第二个位于是,依此类推,最后一个元素位置位于n-1(si
2、ze()-1),List常用方法,List常用方法,List接口的实现,List接口的实现类有:ArrayList和LinkedList 这两种数据结构提供相同的基于索引的方法 这两种数据类型运行时间和效率大不相同,ArrayList集合特性(1),是一种在内存连续区域 中存储数据的通用数组,底层的存储是一个允许直接访问的数组 动态增长,以满足应用程序的需要,ArrayList集合特性(2),一种能够在尾部动态增长以满足应用程序需求的通用数组。在列表尾部插入或删除非常有效,但是在ArrayList之内的这些操作并不十分有效。,为什么在ArrayList之内操作插入删除数据不是很有效?,使用Ar
3、rayList,注册登记员保管的毕业清单含有大四毕业生的姓名及其获得的学位BS或BA,并且按照毕业生的字母顺序排列。在毕业典礼上,首先向获得BS学位的学生颁发毕业证书。随后再向获得BA学位的学生颁毕业证书。这个程序从文件gradlist.dat中读取注册登记员保管的毕业清单,该清单由多行数据组成,每一行数据都含有制表符分隔的学生姓名及其获得的学位。应用程序在ArrayList集合中插入由姓名和学位组成的串,其中获得BS学位的毕业生信息被插入ArrayList集合diplomaList中,获得BA学位的毕业生信息被插入ArrayList集合baList,通过将baList添加到diplomaLi
4、st的末尾来连接两个列表,最后输出连接后的列表,实现ArrayList(1),ArrayList的设计,ArrayList对象使用一个指定类型的私有数组listArr来存储元素,它的大小表示存储ArrayList元素的可用存储量,私有的整数变量listSize维护ArrayList中实际元素数。,实现ArrayList(2),准备更大的容量,方法ensureCapacity()是ArrayList类的实现中的一个重要操作,它提供了允许ArrayList对象进行动态增长的存储管理空间。,实现ArrayList(3),添加和删除的方法,基于索引的add(),remove()方法以及get()和se
5、t()方法需要一个索引的实参,这个索引的实参必须位于使操作有效的特定范围之内。所以需要一个rangeCheck()来验证指定索引是否位于指定的范围之内 。 接着再来实现add(),add(index,item ),add(item) ,remove()方法,remove(index)方法,remove(item)方法,实现ArrayList(4),实现索引访问,实现get()和set()方法,总结,集合是一个保存其他对象的对象 Collection接口除了实现映射的集合类之外的所有集合类定义了一些方法 List集合类型描述了一种按位置存储数据的对象 ArrayList是一种在内存连续区域 中存储数据的通用数组,