Verstehen dieses Beispiels:
//Typparameter können keine Basistypen verwenden. T und U sind tatsächlich derselbe Typ.
//Jedes Mal, wenn Sie neue Daten eingeben, wird daraus ein neues Top. Schieben Sie das ursprüngliche Top eine Ebene nach unten und stellen Sie über den Zeiger eine Verknüpfung her.
//Der End-Sentinel ist ein vom Standardkonstruktor erstellter Knoten, der die Anforderung erfüllt, dass end() true zurückgibt.
//: 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 */
Weitere Artikel zur generischen Implementierung einer Stack-Klasse in Java-Programmierideen finden Sie auf der chinesischen PHP-Website!