Heim  >  Artikel  >  Java  >  Generika in Java-Programmierideen implementieren eine Stack-Klasse

Generika in Java-Programmierideen implementieren eine Stack-Klasse

高洛峰
高洛峰Original
2017-01-18 11:03:281316Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn