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
    *///:~
  • 相关阅读:
    webpack-merge 配置抽离
    从这个博客皮肤迈入前端性能优化一小步
    用 webpack 搭了一个写博客园皮肤的架子
    host 文件位置
    鼠标右键添加取得管理员所有权
    桌面快捷方式去掉小箭头
    win10恢复系统预装软件
    Zookeeper相关知识
    Docker安装常见的应用与将本地镜像推送到阿里云
    DockerFile解析
  • 原文地址:https://www.cnblogs.com/lionfight/p/3164647.html
Copyright © 2011-2022 走看看