ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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中提供了参数化类型,利用它们便可自动完成这一工作(还有其他许多好处)。