JAVA泛型实现一个堆栈类

 1 package com.xt.test;
 2
 3 /**
 4  * 泛型实现堆栈,thinking in java中的例子
 5  *
 6  * @author Administrator
 7  *
 8  * @param <T>
 9  */
10 public class LinkedTrack<T> {
11     private static class Node<U> {
12         U item;
13         Node<U> next;
14
15         Node() {
16             item = null;
17             next = null;
18         }
19
20         Node(U item, Node<U> next) {
21             this.item = item;
22             this.next = next;
23         }
24
25         boolean end() {
26             return item == null && next == null;
27         }
28     }
29
30     /**
31      * 末端哨兵,用来标示是否到了尽头
32      */
33     private Node<T> top = new Node<T>();
34
35     /**
36      * 节点中添加节点(包含进去)
37      *
38      * @param item
39      */
40     public void push(T item) {
41         top = new Node<T>(item, top);
42     }
43
44     /**
45      * 节点中取节点(舍去)
46      *
47      * @return
48      */
49     public T pop() {
50         T result = top.item;
51         if (!top.end())
52             top = top.next;
53         return result;
54     }
55
56     public static void main(String[] args) {
57         LinkedTrack<String> lt = new LinkedTrack<String>();
58         for (String s : "This is a test!".split(" "))
59             lt.push(s);
60         String s;
61         while ((s = lt.pop()) != null)
62             System.out.println(s);
63     }
64
65 }

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

时间: 2024-10-17 16:22:40

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

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

当项目是ssh框架时,每一个Action会对应一个Service和一个Dao.但是所有的Ation对应的Dao中的方法是相同的,只是要查的表不一样.由于封装的思想,为了提高代码的重用性.可以使用java中的泛型+反射去实现最终的封装,将所有的Dao层的共同部分写一个BaseDaoUtil.而所有的Dao都继承这个类. 思路: ----->(1)反射+泛型 ----->(2)当生成子类对象(UserDao),调用空构造时(new UserDao()),子类的空构造会默认调用父类的空构造器(new

java,编写一个矩形类,

package org.hanqi.pn0120; public class JuXing { double chang; double kuan; JuXing(double chang,double kuan) { this.chang=chang; this.kuan=kuan; } //计算面积 double getMianJi() { return this.chang*this.kuan; } public static void main(String[] args) { JuXi

定义一个堆栈类

template<class TYPE> class Stack { public: Stack(); ~Stack(); void push(const TYPE &); TYPE& top(); const TYPE& top() const; void pop(); bool emtpy() const; size_t size() const; private: deque<TYPE> m_deq; };

Java泛型指哪些

以下文章的内容主要是围绕(Java泛型:类型檫除.模板和泛型传递)这个内容来讲述的,一起看下小编带来的java的这三个泛型简介. Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在JDK 5中的新集合类框架中.对于泛型概念的引入,开发社区的观点是褒贬不一.从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编

2.java泛型基础

Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在JDK 5中的新集合类框架中.对于泛型概念的引入,开发社区的观点是褒贬不一.从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误.而从不好的地方来说,为了保证与旧有版本的兼容性,Java泛型的实现上存在着一些不够优雅的地

用Java语言编写一个简易画板

讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目需要满足怎样的需求. 那么,画板需要满足怎样的需要呢?换句话说,在画板上,我们应该赋予它什么功能呢?从我们熟悉的画板来看,我们需要实现诸如铅笔.橡皮.喷枪.刷子的功能,我们可以画出一些规则的图形,比如直线.矩形.圆.最好我们还能调整画笔的颜色和粗细.以上,我们希望的是,当我们点击一个按钮的时候,我们

Java泛型:泛型的定义(类、接口、对象)、使用、继承

地址   http://blog.csdn.net/lirx_tech/article/details/51570138 1. 设计泛型的初衷: 1) 主要是为了解决Java容器无法记忆元素类型的问题: i. 由于Java设计之初并不知道会往容器中存放什么类型的元素,因此元素类型都设定为Object,这样就什么东西都能放了! ii. 但是这样设计有明显的缺点: a. 取出元素的时候必须进行强制类型转换(尽管集合在运行时里面元素的"运行时类型"不变,即元素的getClass返回的还是最初

黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API

一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 2.泛型技术是给编译器使用的技术,用于编译时期,确保类型的安全. 3.泛型的擦除:运行时,会将泛型去掉,生成class文件中的是不带泛型的,这个称为“泛型的擦除”.擦除泛型的原因是为了兼容运行时的类加载器. 4.泛型的好处:(1)将运行时期出现的问题ClassCastException,转移到了编译时期.方便于程序员解决问题,让运行时期问题减少.安全.(2)避免了强制转换的麻烦. 5.泛

小结在一个java源文件当中可以有多个类,但是为什么只能有一个public类呢?而当这个类被修饰为public的话,为什么源文件名必须要与类名相同呢?

Java编程思想中的一段话: 当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元).每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名.java).每个编译单元只能有一个public类,否则编译器就不会接受.如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为它们不是public类,而且它们主要用来为主public类提供支持. 理解: 每编