第九讲范型程序设计 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 1 第九讲 范型程序设计
程序设计的风范 结构化 基于对象 ●面向对象 ●范型编程 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 2 程序设计的风范 ⚫ 结构化 ⚫ 基于对象 ⚫ 面向对象 ⚫ 范型编程
为什么要引入范型? 1减少类的数目 ●2初步剖离数据结构与算法 ●3提升程序运行效率 4减少编码错误:可以在编译时检査类型 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 3 为什么要引入范型? ⚫ 1 减少类的数目 ⚫ 2 初步剖离数据结构与算法 ⚫ 3 提升程序运行效率 ⚫ 4 减少编码错误:可以在编译时检查类型
先从Java范型对象容器开始 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 4 先从Java范型对象容器开始
ArrayList 范型化的动态数组 ArrayList 实例: ArrayListDemo. java 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 5 ArrayList ⚫ 范型化的动态数组ArrayList ⚫ 实例:ArrayListDemo.java
使用迭代器访问 Array List 实例: teratorDemo. java 迭代器的含义 ArrayList实现了Lis暖接口,而List接口要求 有一个返回 terator类型对象的方法 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 6 使用迭代器访问ArrayList ⚫ 实例:IteratorDemo.java ⚫ 迭代器的含义 ⚫ ArrayList实现了List接口,而List接口要求 有一个返回Iterator类型对象的方法
另一个容器 Linkedlist ●范型化的链表 实例: String Demo. java 用 Linkedlist实现字串堆栈 实例: String Queue Demo. java 用 Linkedlist实现字串队列 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 7 另一个容器LinkedList ⚫ 范型化的链表 ⚫ 实例:StringStackDemo.java 用LinkedList实现字串堆栈 ⚫ 实例:StringQueueDemo.java 用LinkedList实现字串队列
对象集合(一) 集合中的元素不允许重复 ●Java提供了一个自动哈希排序的集合 Hash set 实例: HashSetDemo. java 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 8 对象集合(一) ⚫ 集合中的元素不允许重复 ⚫ Java提供了一个自动哈希排序的集合 HashSet ⚫ 实例:HashSetDemo.java
对象集合(二) ●按字典次序排序的集合 Tree Set, 实例: Tree SetDemo java ●要自定义排序方法,可以传给 Tree Set一个 实现了 Comparato接口的类,由它完成比 对对象的工作: CustomComparator. java 运行实例: Tree SetDemo2java 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 9 对象集合(二) ⚫ 按字典次序排序的集合TreeSet, ⚫ 实例:TreeSetDemo.java ⚫ 要自定义排序方法,可以传给TreeSet一个 实现了Comparator接口的类,由它完成比 对对象的工作:CustomComparator.java ⚫ 运行实例: TreeSetDemo2.java
键-对象集合(一) HashMap类 实例: HashMapDemo java ●迭代访问集合中的元素 实例: HashMapDemo2ava LinkedHashMap类,保持元素最初加入的 顺序 实例: LinkedhashMapDemo. java 北京理工大学计算机系(共34页)
北京理工大学计算机系(共34页) 10 键-对象集合(一) ⚫ HashMap类 实例:HashMapDemo.java ⚫ 迭代访问集合中的元素 实例:HashMapDemo2.java ⚫ LinkedHashMap类,保持元素最初加入的 顺序 实例:LinkedHashMapDemo.java