Java编程思想里的泛型实现一个堆栈类 分享

时间:2021-07-21 20:37:14 

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

对这个例子的理解:

//类型参数不能用基本类型,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
*/

标签:Java,泛型,堆栈类
0
投稿

猜你喜欢

  • C#操作配置文件app.config、web.config增删改

    2022-05-21 01:06:47
  • 从Cocos2d-x2迁移到Cocos2d-x3的过程分享

    2021-06-07 23:52:28
  • Android实现在子线程中更新Activity中UI的方法

    2022-12-16 23:57:46
  • Java 抽象类特点总结

    2023-07-28 10:39:46
  • 简单了解Spring中BeanFactory与FactoryBean的区别

    2022-01-14 03:59:20
  • 在spring中实例化bean无效的问题

    2022-03-16 17:55:34
  • C# Socket编程实现简单的局域网聊天器的示例代码

    2022-10-01 19:45:45
  • 基于Java手写一个好用的FTP操作工具类

    2021-06-05 20:10:18
  • Android IdleHandler使用方法详解

    2023-11-17 20:48:11
  • 超酷炫的Android碎纸机效果推荐

    2022-05-21 01:20:44
  • SpringCloud Gateway 路由配置定位原理分析

    2022-06-10 19:57:47
  • Java ExecutorService四种线程池使用详解

    2023-05-17 07:12:56
  • 用C语言实现五子棋小游戏

    2023-01-19 12:56:58
  • SpringBoot+Redis实现数据字典的方法

    2022-08-03 14:22:29
  • Android SQLite详解及示例代码

    2023-08-04 22:26:35
  • Java读取txt文件和写入txt文件的简单实例

    2022-01-01 05:04:16
  • 使用Spring Boot 2.x构建Web服务的详细代码

    2022-09-17 04:08:40
  • java 线程中start方法与run方法的区别详细介绍

    2023-08-23 20:41:31
  • 基于Flutter实现爱心三连动画效果

    2023-09-02 03:38:36
  • Templates实战之更优雅实现自定义View构造方法详解

    2021-12-22 13:22:40
  • asp之家 软件编程 m.aspxhome.com