package com.xt.test;

 /**
* 泛型实现堆栈,thinking in java中的例子
*
* @author Administrator
*
* @param <T>
*/
public class LinkedTrack<T> {
private static class Node<U> {
U item;
Node<U> next; Node() {
item = null;
next = null;
} Node(U item, Node<U> next) {
this.item = item;
this.next = next;
} boolean end() {
return item == null && next == null;
}
} /**
* 末端哨兵,用来标示是否到了尽头
*/
private Node<T> top = new Node<T>(); /**
* 节点中添加节点(包含进去)
*
* @param item
*/
public void push(T item) {
top = new Node<T>(item, top);
} /**
* 节点中取节点(舍去)
*
* @return
*/
public T pop() {
T result = top.item;
if (!top.end())
top = top.next;
return result;
} public static void main(String[] args) {
LinkedTrack<String> lt = new LinkedTrack<String>();
for (String s : "This is a test!".split(" "))
lt.push(s);
String s;
while ((s = lt.pop()) != null)
System.out.println(s);
} }

看书中的代码看了很久都搞不懂到底是怎么实现的,最终在eclipse中把代码照着写了一边,人笨,调试运行才恍然大悟原来用了<多层嵌套的原理>(自己瞎想的名字),具体看如下截图:

JAVA泛型实现一个堆栈类的更多相关文章

  1. Java编程思想里的泛型实现一个堆栈类

    觉得作者写得太好了,不得不收藏一下. 对这个例子的理解: //类型参数不能用基本类型,T和U其实是同一类型. //每次放新数据都成为新的top,把原来的top往下压一级,通过指针建立链接. //末端哨 ...

  2. Java 泛型示例 - 泛型方法,类,接口

    Java Genrics 是 Java 5 中引入的最重要的功能之一. 如果您一直在使用Java Collections并使用版本 5 或更高版本,那么我确定您已经使用过它. Java 中具有集合类的 ...

  3. java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

    当项目是ssh框架时,每一个Action会对应一个Service和一个Dao.但是所有的Ation对应的Dao中的方法是相同的,只是要查的表不一样.由于封装的思想,为了提高代码的重用性.可以使用jav ...

  4. java中自定义一个异常类 在某些情况抛出自定的异常 ----------阻断程序

    //=============定义异常类 package org.springblade.flow.engine.errorException; /** * 自定义异常处理写入sap失败 */ pub ...

  5. 如何用java代码写一个堆栈

    public class Stack { int[] data; int maxSize; int top; public Stack(int maxSize) { this.maxSize = ma ...

  6. Java——泛型

    前言 一般的类和方法,使用的都是具体的类型:基本类型或者自定义的类.如果我们要编写出适用于多种类型的通用代码,那么肯定就不能使用具体的类型.前面我们介绍过多态,多态算是一种泛化机制,但是也会拘泥于继承 ...

  7. Java深度历险(五)——Java泛型

      作者 成富 发布于 2011年3月3日 | 注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情!17 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...

  8. java 深度探险 java 泛型

    Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在JD ...

  9. Java泛型中<?> 和 <? extends Object>的异同分析

    相信很多人和我一样,接触Java多年,却仍旧搞不清楚 Java 泛型中 <?>和 <? extends Object>的相似和不同.但是,这应该是一个比较高端大气上档次的Que ...

随机推荐

  1. 使用runOnUiThread更新UI

    android中更新UI的方式比较多,这里就不一一介绍了,比较常用的Thread+Handler,但是这种方式较繁琐,如在使用ProgressDialog创建进度对话框一文中就是使用的这种方式更新UI ...

  2. java InputStream使用

    InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len).其中read()方法是一次读取一个字节,效率 ...

  3. ajax重复提交到相同url时出现的问题

    如 $.ajax({   url : url,   success : function(ret) {    if (!noProgress){cniia.closeProgress();}    i ...

  4. oracle 取头十条数据

    select * from(select * from table order by age)where rownum < 11

  5. [转载]node.js express 4.x 安装指南,没有自动配置环境变量的问题

    前几天express 推出了4.0,得知这个消息,自己尝试了一下,突然发现用以前的文档上的操作出现了各种问题.结果只能去看文档,现在在这个给大家分享下4.0版本的安装. 先说下如果需要用express ...

  6. php获取网页内容方法 小偷程序 采集程序

    抓取到的内容在通过正则表达式做一下过滤就得到了你想要的内容,至于如何用正则表达式过滤,在这里就不做介绍了,有兴趣的,以下就是几种常用的用php抓取网页中的内容的方法.1.file_get_conten ...

  7. vb sqlite 使用 litex

    Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal ...

  8. linux下gmplayer安装(亲测OK!)

    需要的安装包及下载地址:  mplayer源代码包(MPlayer-1.0rc4.tar.bz2)下载:http://www.mplayerhq.hu/MPlayer/releases/ 解码器安装包 ...

  9. saiku导出excel单元格格式与中文列宽自动适应

    在saiku导出excel后打开发现单元格的整数也显示为小数,并且含有中文的列宽没有自动适应,解决办法如下: 打开ExcelWorksheetBuilder.java文件,找到applyCellFor ...

  10. 【leetcode边做边学】二分查找应用

    很多其它请关注我的HEXO博客:http://jasonding1354.github.io/ 简书主页:http://www.jianshu.com/users/2bd9b48f6ea8/lates ...