Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架

上传人:E**** 文档编号:89370120 上传时间:2019-05-24 格式:PPT 页数:26 大小:610.50KB
返回 下载 相关 举报
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架_第1页
第1页 / 共26页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架_第2页
第2页 / 共26页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架_第3页
第3页 / 共26页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架_第4页
第4页 / 共26页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架》由会员分享,可在线阅读,更多相关《Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第12章_泛型与集合框架(26页珍藏版)》请在金锄头文库上搜索。

1、2019/5/24,1,注意:开始用功了!,2019/5/24,2,Java程序设计实用教程 第12章,配合例子源代码一起使用,Power point 制作:耿祥义 张跃平,泛型与集合框架,2019/5/24,3,导 读,2019/5/24,4,在jdk1.2之后,Java提供了实现常见数据结构的类,这些实现数据结构的类通称为Java集合框架。在JDK1.5后,Java集合框架开始支持泛型,本章首先介绍泛型,然后讲解常见数据结构类的用法。,概述,2019/5/24,5,12.1 泛型,泛型(Generics)是在JDK1.5中推出的,其主要目的是可以建立具有类型安全的集合框架,如链表、散列映射

2、等数据结构。,2019/5/24,6,12.1.1 泛型类,可以使用“class 名称”声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类,如: class ShowObject 其中ShowObject是泛型类的名称,E是其中的泛型,也就是说我们并没有指定E是何种类型的数据,它可以是任何对象或接口,但不能是基本类型数据。 ShowObject类可以用泛型E作为自己的一个成员或方法中的参数,ShowObject.java的代码如下: public class ShowObject public showMess (E b) String mess = b.toString(); /泛型

3、变量只能调用toString()方法 System.out.println(mess); ,2019/5/24,7,12.1.2 使用泛型类声明对象,泛型类声明和创建对象时,类名后多了一对“”,而且必须要用具体的类型替换“”中的泛型。例如: Cone coneOne; coneOne =new Cone(new Circle();,例12-1 Dog.java , Cat.java , Example12_1.java ShowObject.java,2019/5/24,8,12.1.3 泛型接口,可以使用“interface名称”声明一个接口,这样声名的接口称作泛型接口如: interfac

4、e Listen void listen(E x); 其中Listen是泛型接口的名称,E是其中的泛型。泛型类和普通类都可以实现泛型接口,但普通类实现泛型接口时,必须指定泛型接口中泛型列表中的具体类型。,例12-2 Example12_2.java,2019/5/24,9,12.1.4 泛型的目的,Java泛型的主要目的是可以建立具有类型安全的数据结构,如链表、散列表等数据结构,最重要的一个优点就是:在使用这些泛型类建立数据结构时,不必进行强制类型转换,即运行时不进行类型检查。JDK1.5是支持泛型的编译器,它将运行时的类型检查提前到编译时执行,使代码更安全。,2019/5/24,10,12.

5、2 链表,链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 。,2019/5/24,11,12.2.1 LinkedList泛型类, LinkedList泛型类创建的对象以链表结构存储数据,习惯上称LinkedList类创建的对象为链表对象。例如, LinkedList mylist=new LinkedList(); 创建一个空双链表。 add(E obj) 向链表依次增加节点 例如: list.add(“你好“); list.add(“十一快乐“); list.add(“注意休息“);,2019/5/24,12,12.2.2 常用方法, LinkedL

6、ist泛型类实现Lis泛型接口中的一些常用方法。 public boolean add(E element) 向链表末尾添加一个新的节点,该节点中的数据是参数elememt指定的数据。 public void add(int index ,E element) 向链表的指定位置添加一个新的节点,该节点中的数据是参数elememt指定的数据。 public void clear() 删除链表的所有节点,使当前链表成为空链表。 public E remove(int index) 删除指定位置上的节点。 public boolean remove(E element) 删除首次出现含有数据elem

7、en的节点。 public E get(int index) 得到链表中指定位置处节点中的数据。 LinkedList泛型类本身新增加的一些常用方法 public void addFirst(E element) 向链表的头添加新节点,该节点中的数据是参数elememt指定的数据。 public void addLast(E element) 向链表的末尾添加新节点,该节点中的数据是参数elememt指定的数据。 public E getFirst() 得到链表中第一个节点中的数据。 public E getLast() 得到链表中最后一个节点中的数据。 public E removeFirs

8、t() 删除第一个节点,并返回这个节点中的数据。 ,2019/5/24,13,12.2.3 遍历链表, 当用户需要遍历集合中的对象时,应当使用该集合提供的迭代器,而不是让集合本身来遍历其中的对象。由于迭代器遍历集合的方法在找到集合中的一个对象的同时,也得到待遍历的后继对象的引用,因此迭代器可以快速地遍历集合。 链表对象可以使用iterator()方法获取一个Iterator对象,该对象就是针对当前链表的迭代器。 例12-3 Example12_3.java,例12-4 Example12_4.java,2019/5/24,14,12.2.4 排序与查找,Collections类提供的用于排序和

9、查找的类方法如下: public static sort(List list) 该方法可以将list中的元素升序排列。 compareTo(E b) 实现Comparable接口类创建的对象可以调用compareTo(E b)方法和参数指定的对象比较大小关系。 int binarySearch(List list, T key) 使用折半法查找list是否含有和参数key相等的元素,如果key链表中某个元素相等,方法返回和key相等的元素在链表中的索引位置(链表的索引位置从0考试),否则返回-1。,例12-5 People.java , Example12_5.java,2019/5/24,1

10、5,12.2.5 洗牌与旋转,Collections类还提供了将链表中的数据重新随机排列的类方法以及旋转链表中数据的类方法。 public static void shuffle(List list) 将list中的数据按洗牌算法重新随机排列。 static void rotate(List list, int distance) 旋转链表中的数据。 public static void reverse(List list) 翻转list中的数据。,例12-6 Example12_6.java,例12-7 Example12_7.java,2019/5/24,16,12.3 堆栈,堆栈是一种“

11、后进先出”的数据结构,只能在一端进行输入或输出数据的操作。 Stack泛型类创建一个堆栈对象,堆栈对象常用方法: public E push(E item);实现压栈操作 public E pop();实现弹栈操作。 public boolean empty();判断堆栈是否还有数据。 public E peek();获取堆栈顶端的数据,但不删除该数据。 public int search(Object data);获取数据在堆栈中的位置。,例12-8 Example12_8.java,2019/5/24,17,12.4 散列映射 12.4.1 HashMap泛型类,HashMap对象采用散列

12、表这种数据结构存储数据,习惯上称HashMap对象为散列映射。 例如: HashMap hashtable = HashSet(); hashtable可以存储“键/值”对数据。 相关方法: public V put(K key,V value)将键/值对数据存放到散列映射中,该方法同时返回键所对应的值。,2019/5/24,18,12.4.2 常用方法,public void clear() 清空散列映射。 public Object clone() 返回当前散列映射的一个克隆。 public boolean containsKey(Object key) 如果散列映射有“键/值”对使用了参

13、数指定的键,方法返回true,否则返回false。 public boolean containsValue(Object value) 如果散列映射有“键/值”对的值是参数指定的值。 public V get(Object key) 返回散列映射中使用key做键的“键/值”对中的值。 public boolean isEmpty() 如果散列映射不含任何“键/值”对,方法返回true,否则返回false。 public V remove(Object key) 删除散列映射中键为参数指定的“键/值”对,并返回键对应的值。 public int size() 返回散列映射的大小,即散列映射中“

14、键/值”对的数目。,2019/5/24,19,12.4.3 遍历散列映射,public Collection values()方法返回一个实现Collection接口类创建的对象。 使用接口回调技术,即将该对象的引用赋给Collection接口变量,该接口变量可以回调iterator()方法获取一个Iterator对象,这个Iterator对象存放着散列映 射中所有“键/值”对中的“值”。,2019/5/24,20,12.4.4 基于散列映射的查询,对于经常需要进行查找的数据可以采用散列映射来存储这样的数据,即为数据指定一个查找它的关键字,然后按着“健-值”对,将关键字和数据一并存入散列映射中

15、。,例12-9 Example12_9.java ReadWord.java word.txt,2019/5/24,21,12.5 树集 12.5.1 TreeSet泛型类,TreeSet类创建的对象称作树集。 例如 TreeSet mytree=new TreeSe(); 然后使用add方法为树集添加节点,例如 mytree.add(“boy“);,2019/5/24,22,12.5.2 节点的大小关系,树集用add方法添加节点,节点会按其存放的数据的“大小”顺序一层一层地依次排列,在同一层中的节点从左到右按“大小”顺序递增排列,下一层的都比上一层的小。,2019/5/24,23,12.5.

16、3 TreeSet类的常用方法,public boolean add(E o) 向树集添加加节点。 public void clear() 删除树集中的所有节点。 public void contains(Object o) 如果树集中有包含参数指定的对象,该方法返回true,否则返回false 。 public E first() 返回树集中的第一个节点中的数据(最小的节点)。 public E last() 返回最后一个节点中的数据(最大的节点)。 public isEmpty() 判断是否是空树集,如果树集不含任何节点,该方法返回true 。 public boolean remove(Object o) 删除树集中的存储参数指定的对象的最小节点。 public int size() 返回树集中节点的数目。,例12-10 Example12_10.java,2019/5/24,24,12.6 树映射,TreeMap类实现了Map

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号