Java程序设计第10章.ppt

上传人:本田雅阁 文档编号:2201836 上传时间:2019-03-03 格式:PPT 页数:26 大小:294.51KB
返回 下载 相关 举报
Java程序设计第10章.ppt_第1页
第1页 / 共26页
Java程序设计第10章.ppt_第2页
第2页 / 共26页
Java程序设计第10章.ppt_第3页
第3页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Java程序设计第10章.ppt》由会员分享,可在线阅读,更多相关《Java程序设计第10章.ppt(26页珍藏版)》请在三一文库上搜索。

1、第十章 集合类框架,主要内容,集合类框架的概念 集合类接口 集合类 集合类与集合接口应用,集合类框架的概念,对象通过组合构成更高级别的对象。集合类框架就是用来描述这种组合关系,它由一系列的集合类和接口所组成,主要存放在java.util包中。,集合类就是用来将一组对象组装成一个对象 。,A1、A2到An等N个对象,都在集合 对象当中有它们的引用,而集合对象 又被它的引用cl所引用。,集合类接口,Collection接口类型,子接口有List、Set 。List接口规定实现其的集合类元素具有可以控制的顺序,但并没有定义或限制按什么排序;Set 不能包含重复的元素 。,Collection是集合类

2、的基本接口,它用来说明作为一个集合类应有的结构特征属性和带有共性的操作方法。,Collection接口中的主要方法见表10.1。,对集合类遍历的接口,Iterator接口,主要接口方法和说明见表10.3。,Enumeration接口,主要接口方法和说明见表10.2 。,ListIterator接口 。,Map接口类型,Map接口用于将一个键(Key)映射到一个值(Value),且不允许有重复的键。主要接口方法和说明见表10.4。,集合类,集合类及其特性对比 ,见表10.5。,对象引用的造型。,集合类存放的是对象引用而非对象本身。,常用集合类比较,ArrayList和LinkedList,见表1

3、0.7。,Vector和ArrayList,见表10.6。,Hashtable和HashMap,见表10.8。,TreeMap和HashMap,见表10.9。,Collection接口、Map接口及其子接口,接口是Java Collections Framework的三个构成组件之一,它们为创建特定的集合类提供规范。在Java集合架构中,接口位于层次结构的上端。,AbstractSet类和HashSet类,AbstractSet类扩展了AbstractCollection类(它实现了Collection接口中除size和iterator之外的所有方法),并实现了Set,为equals方法和ha

4、shCode方法提供了具体实现。size方法和iterator方法并未在AbstractSet类中实现,所以它是一个抽象类。,TreeSet类和Comparator接口,我们已经知道,SortedSet是Set的子接口,它能保证对集内的元素进行排序。而TreeSet是实现SortedSet接口的具体类。排序是建立在比较的基础上的,在Java中,有两种比较对象的方法(其中之一就是使用Comparator接口),本节将介绍它们,并介绍TreeSet类和Comparator接口的用法。,ArrayList类和LinkedList类,ArrayList类和LinkedList类都是List接口的具体实

5、现。这两种类各有优缺点,需要根据所要解决的问题的特点进行选择。 ArrayList类实现了具有可变长度的数组,支持随机存取。LinkedList类适用于需要频繁地插入和删除元素的情况。每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小,这个容量会随着新元素的不断增加而自动增长。LinkedList类以链接列表的方式实现了List接口,它提供了从列表的首尾检索、插入和删除元素的方法,这使得LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。,Vector类和Stack类,Vector类是List接口的一个具体实现,它非常

6、类似于ArrayList,但Vector是同步的。Stack类继承自Vector,实现一个后进先出的堆栈。这两个类在Java集合架构出现之前就得到了Java的支持,在Java集合架构中,这两个类得到了重新设计,但它们用于存储量的原有格式方法都被保留了下来。,HashMap类和TreeMap类,HashMap类和TreeMap类是Map接口的两种具体实现。它们也同样具有各不相同的优缺点,分别适用于不同的情况。 使用HashMap类可以很方便地定位映射中的值对象、插入映射和删除映射;而实现SortedMap的TreeMap类可以非常高效地按照排序顺序遍历键。,Collections类和Arrays

7、类,在Java集合架构中,有两个提供很多静态方法的类:Collections类和Arrays类。Collection类中包含一些操作集合的静态方法以及创建同步集合类和只读集合类的映射,Arrays类中包含很多操作标准Java数组的静态方法。本节将介绍如何使用这些静态方法。,哈希表类的构造方法、属性变量和成员方法,1构造方法 哈希表类(Hashtable)共有三种形式的构造方法: (1) public Hashtable(int initialCapacity, float loadFactor); 参数initialCapacity给定哈希表创建初始可容纳的元素数,loadFactor为装载因

8、子,取值0.0到1.0之间。 (2) public Hashtable(int initialCapacity); 参数initialCapacity给定哈希表创建时可容纳的元素数,loadFactor为缺省值。 (3) public Hashtable(); 参数initialCapacity和loadFactor均为缺省值。 2、哈希表类没有定义属性变量,成员方法 哈希表类定义的主要方法如下: public int size(); 返回哈希表大小(即表中元素个数)。 public boolean isEmpty(); 确认哈希表是否为空。 public synchronized Enume

9、ration keys(); 返回哈希表内关键字枚举值。 public synchronized Enumeration elememnts(); 返回有关内元素的一个枚举值对象,随后Emumeration类方法顺序获取对象。 public synchronized boolean contains(Object value); 确认哈希表内是否包括了给定的对象,与containKey()类似。 public synchronized boolean contains(Object key); 确认哈希表内是否包括了给定的关键字。,public synchronized Object get(

10、Object key); 获取对应关键字的对象,如不存在返回null。 protected void rehash(); 再哈希,扩充哈希表使之可以保存更多的元素。当哈希表达到饱和时,系统将自动调用此方法。 public synchronized Object put(Object key,Object value); 用给定的关键字把对象保存到哈希表中。随后该对象即可通过同样的关键字由get方法获取。这里的关键字和元素均不可为空。 public synchronized Object remove(Object key); 从哈希表中删除与给定关键字相对应的对象,如该对象不存在则返回null

11、。 public synchronized void clear(); 从哈希表中删除所有对象,使其为空。 public synchronized String toString(); 把哈希表内容转换为一字符串,此方法覆盖了Object类的toString()方法。,哈希表的使用,哈希表的创建与Java中其它对象一样需使用new操作,如下例所示: HashTable hash_1=new HashTable(); 为了把对象保存到哈希表,必须为每一个对象分配一关键字。关键字可以为任意对象,但必须实现了hashCode()和equals()方法。Java提供的类几乎都提供了这两个方法。建好哈希

12、表后,现在利用上述put方法把数据存放到哈希表中去。 hash_1.put(“one”,new Integer(1); hash_1.put(“two”,new Integer(2); hash_1.put(“three”,new Integer(3);,为了把对象从哈希表中删除,须使用remove()方法。例如: hash_1.remove(“two”); 这时对象Integer(2)将从哈希表删除,同时返回这个被删除的对象。如指定的关键字不存在,remove()返回null。 使用哈希表类的get()和containKey()访问方法可以查找关键字。例如: Integer n=(Integer) hash_1.get(“three”); if (n!=null System.out.println(three=”+n); 如果查找的关键字不存在,get返回null。,集合类与集合接口应用,LinkedList对象应用【例10.2】。,Vector类与Enumeration和Iterator接口应用【例10.1】。,Stack类应用【例10.3】。,List接口和其实现类应用List接口和其实现类应用【例10.4】。,Map接口及其实现类应用【例10.5】。,HashMap应用 【例10.6】。,TreeMap应用 【例10.7】。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1