- 写在前面的话
- 引言
- 第 1 章 对象入门
- 第 2 章 一切都是对象
- 第 3 章 控制程序流程
- 第 4 章 初始化和清除
- 第 5 章 隐藏实施过程
- 第 6 章 类再生
- 第 7 章 多形性
- 第 8 章 对象的容纳
- 第 9 章 违例差错控制
- 第 10 章 Java IO 系统
- 第 11 章 运行期类型鉴定
- 第 12 章 传递和返回对象
- 第 十三 章 创建窗口和程序片
- 第 14 章 多线程
- 第 15 章 网络编程
- 第 16 章 设计范式
- 第 17 章 项目
- 附录 A 使用非 JAVA 代码
- 附录 B 对比 C++和 Java
- 附录 C Java 编程规则
- 附录 D 性能
- 附录 E 关于垃圾收集的一些话
- 附录 F 推荐读物
8.9 练习
(1) 新建一个名为 Gerbil 的类,在构建器中初始化一个 int gerbilNumber(类似本章的 Mouse 例子)。为其写一个名为 hop() 的方法,用它打印出符合 hop() 条件的 Gerbil 的编号。建一个 Vector,并为 Vector 添加一系列 Gerbil 对象。现在,用 elementAt() 方法在 Vector 中遍历,并为每个 Gerbil 都调用 hop()。
(2) 修改练习 1,用 Enumeration 在调用 hop() 的同时遍历 Vector。
(3) 在 AssocArray.java 中,修改这个例子,令其使用一个 Hashtable,而不是 AssocArray。
(4) 获取练习 1 用到的 Gerbil 类,改为把它置入一个 Hashtable,然后将 Gerbil 的名称作为一个 String(键)与置入表格的每个 Gerbil(值)都关联起来。获得用于 keys() 的一个 Enumeration,并用它在 Hashtable 里遍历,查找每个键的 Gerbil,打印出键,然后将 gerbil 告诉给 hop()。
(5) 修改第 7 章的练习 1,用一个 Vector 容纳 Rodent(啮齿动物),并用 Enumeration 在 Rodent 序列中遍历。记住 Vector 只能容纳对象,所以在访问单独的 Rodent 时必须采用一个造型(如 RTTI)。
(6) 转到第 7 章的中间位置,找到那个 GreenhouseControls.java(温室控制)例子,该例应该由三个文件构成。在 Controller.java 中,类 EventSet 仅是一个集合。修改它的代码,用一个 Stack 代替 EventSet。当然,这时可能并不仅仅用 Stack 取代 EventSet 这样简单;也需要用一个 Enumeration 遍历事件集。可考虑在某些时候将集合当作 Stack 对待,另一些时候则当作 Vector 对待——这样或许能使事情变得更加简单。
(7) (有一定挑战性)在与所有 Java 发行包配套提供的 Java 源码库中找出用于 Vector 的源码。复制这些代码,制作名为 intVector 的一个特殊版本,只在其中包含 int 数据。思考是否能为所有基本数据类型都制作 Vector 的一个特殊版本。接下来,考虑假如制作一个链接列表类,令其能随同所有基本数据类型使用,那么会发生什么情况。若在 Java 中提供了参数化类型,利用它们便可自动完成这一工作(还有其他许多好处)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论