Java编程思想里的泛型实现一个堆栈类 分享
Java编程思想里的泛型实现一个堆栈类 分享
发布时间:2016-12-28 来源:查字典编辑
摘要:觉得作者写得太好了,不得不收藏一下。对这个例子的理解://类型参数不能用基本类型,T和U其实是同一类型。//每次放新数据都成为新的top,把...

觉得作者写得太好了,不得不收藏一下。

对这个例子的理解:

//类型参数不能用基本类型,T和U其实是同一类型。

//每次放新数据都成为新的top,把原来的top往下压一级,通过指针建立链接。

//末端哨兵既是默认构造器创建出的符合end()返回true的节点。

复制代码 代码如下:

//: generics/LinkedStack.java

// A stack implemented with an internal linked structure.

package generics;

public class LinkedStack<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>(); // End sentinel

public void push(T item) {

top = new Node<T>(item, top);

}

public T pop() {

T result = top.item;

if(!top.end())

top = top.next;

return result;

}

public static void main(String[] args) {

LinkedStack<String> lss = new LinkedStack<String>();

for(String s : "Phasers on stun!".split(" "))

lss.push(s);

String ss;

while((ss = lss.pop()) != null)

System.out.println(ss);

//----- if put integer into the LinkedList

LinkedStack<Integer> lii = new LinkedStack<Integer>();

for(Integer i = 0; i < 10; i++){

lii.push(i);

}

Integer end;

while((end = lii.pop()) != null)

System.out.println(end);

//----- integer test end!

}

}

/* Output:

stun!

on

Phasers

*/

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类