您所在的位置:读书频道 > 设计开发 > Java系列 > 15.2.2 一个堆栈类

15.2.2 一个堆栈类

2007-06-28 09:00 Bruce Eckel 著 陈昊鹏 译 机械工业出版社 字号:T | T
一键收藏,随时查看,分享好友!

《Java编程思想 第4版》共22章,主要包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。本文是一个堆栈类。

AD:

15.2.2   一个堆栈类
接下来我们看一个稍微复杂一点的例子:传统的下推堆栈。在第11章中,我们看到,这个堆栈是作为net.mindview.util.Stack类,用一个LinkedList实现的。在那个例子中,LinkedList本身已经具备了创建堆栈所必需的方法,而Stack可以通过两个泛型的类Stack<T>和LinkedList<T>的组合来创建。在那个示例中,我们可以看出,泛型类型也就是另一种类型罢了(稍候我们会看到一些例外的情况)。
现在我们不用LinkedList,来实现自己的内部链式存储机制。

内部类Node也是一个泛型,它拥有自己的类型参数。这个例子使用了一个末端哨兵(end sentinel)来判断堆栈何时为空。这个末端哨兵是在构造LinkedStack时创建的。然后,每调用一次push()方法,就会创建一个Node对象,并将其链接到前一个Node对象。当你调用pop()方法时,总是返回top.item,然后丢弃当前top所指的Node,并将top转移到下一个Node,除非你已经碰到了末端哨兵,这时候就不再移动top了。如果已经到了末端,客户端程序还继续调用pop()方法,它只能得到null,说明堆栈已经空了。练习5:(2) 移除Node类上的类型参数,并修改LinkedStack.java的代码,证明内部类可以访问其外部类的类型参数。
【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

网络渗透测试——保护网络安全的技术、工具和过程
网络和计算机安全问题已经成为政府、企业必须面对的现实问题。应对安全威胁的途径之一就是采用渗透测试的方法模拟黑客的攻击,找

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院