Heim >Java >javaLernprogramm >Generika in Java-Programmierideen implementieren eine Stack-Klasse Share

Generika in Java-Programmierideen implementieren eine Stack-Klasse Share

高洛峰
高洛峰Original
2017-01-24 15:17:071662Durchsuche

Ich finde den Text des Autors so gut, dass ich ihn speichern muss.

Verständnis dieses Beispiels:

//Typparameter können nicht die Grundtypen T und U verwenden, die tatsächlich vom gleichen Typ sind.

//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
*/

Für weitere Generika in Java-Programmierideen implementieren Sie eine Stack-Klasse. Um verwandte Artikel zu teilen, achten Sie bitte auf die chinesische 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