觉得作者写得太好了不得不收藏一下
对这个例子的理解
//类型参数不能用基本类型T和U其实是同一类型
//每次放新数据都成为新的top把原来的top往下压一级通过指针建立链接
//末端哨兵既是默认构造器创建出的符合end()返回true的节点
复制代码 代码如下:
//: generics/LinkedStackjava
// 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) {
thisitem = item;
thisnext = 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 = topitem;
if(!topend())
top = topnext;
return result;
}
public static void main(String[] args) {
LinkedStack<String> lss = new LinkedStack<String>();
for(String s : "Phasers on stun!"split(" "))
lsspush(s);
String ss;
while((ss = lsspop()) != null)
Systemoutprintln(ss);
// if put integer into the LinkedList
LinkedStack<Integer> lii = new LinkedStack<Integer>();
for(Integer i = ; i < ; i++){
liipush(i);
}
Integer end;
while((end = liipop()) != null)
Systemoutprintln(end);
// integer test end!
}
}
/* Output:
stun!
on
Phasers
*/