zoukankan      html  css  js  c++  java
  • Java编程思想里的泛型实现一个堆栈类

    觉得作者写得太好了,不得不收藏一下。

    对这个例子的理解:

    //类型参数不能用基本类型,T和U其实是同一类型。

    //每次放新数据都成为新的top,把原来的top往下压一级,通过指针建立链接。

    //末端哨兵既是默认构造器创建出的符合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
    *///:~
  • 相关阅读:
    作业,注册页面
    HTML表单
    用HTML制作简历
    多线程同步标记
    集合类
    多态 接口
    java 泛型讲解
    转型
    使用super关键字
    作业题
  • 原文地址:https://www.cnblogs.com/lionfight/p/3164647.html
Copyright © 2011-2022 走看看