>  기사  >  Java  >  Java 프로그래밍 아이디어의 제네릭은 스택 클래스를 구현합니다.

Java 프로그래밍 아이디어의 제네릭은 스택 클래스를 구현합니다.

高洛峰
高洛峰원래의
2017-01-24 15:17:071608검색

작가님 글이 너무 좋아서 아껴둬야 할 것 같아요.

이 예의 이해:

//유형 매개변수는 기본 유형을 사용할 수 없습니다. T와 U는 실제로 동일한 유형입니다.

//새로운 데이터를 넣을 때마다 새로운 탑이 되고, 원래 탑을 한 단계 아래로 밀어 포인터를 통해 링크를 형성합니다.

//end sentinel은 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 프로그래밍 아이디어의 더 일반적인 내용을 보려면 스택 클래스를 구현하세요. 관련 기사를 공유하려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.