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

 更新时间:2013年07月01日 14:46:47   作者:  
这篇文章介绍了Java编程思想里的泛型实现一个堆栈类,有需要的朋友可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

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

对这个例子的理解:

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

相关文章

  • ssm项目改造spring?boot项目完整步骤

    ssm项目改造spring?boot项目完整步骤

    Spring?Boot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成,下面这篇文章主要给大家介绍了关于ssm项目改造spring?boot项目的相关资料,需要的朋友可以参考下
    2023-04-04
  • Spring中校验器(Validator)的深入讲解

    Spring中校验器(Validator)的深入讲解

    Spring校验器,参数校验从此简单。下面这篇文章主要给大家介绍了关于Spring中校验器(Validator)的相关资料,文中通过示例代码介绍非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06
  • Assert.assertEquals的使用方法及注意事项说明

    Assert.assertEquals的使用方法及注意事项说明

    这篇文章主要介绍了Assert.assertEquals的使用方法及注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • mybatis-plus查询方式,部分字段没有值

    mybatis-plus查询方式,部分字段没有值

    这篇文章主要介绍了mybatis-plus查询方式,部分字段没有值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • spring boot使用自定义配置的线程池执行Async异步任务

    spring boot使用自定义配置的线程池执行Async异步任务

    这篇文章主要介绍了spring boot使用自定义配置的线程池执行Async异步任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • java如何将int数组转化为Integer数组

    java如何将int数组转化为Integer数组

    这篇文章主要介绍了java如何将int数组转化为Integer数组,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java中BigInteger类的使用方法详解(全网最新)

    Java中BigInteger类的使用方法详解(全网最新)

    这篇文章主要介绍了Java中BigInteger类的使用方法详解,常用最全系列,本章作为笔记使用,内容比较全面,但常用的只有:构造函数,基本运算以及compareTo(),intValue(),setBit(),testBit()方法,需要的朋友可以参考下
    2023-05-05
  • Java Hibernate中的持久化类和实体类关系

    Java Hibernate中的持久化类和实体类关系

    Hibernate是一种Java对象关系映射框架,通过持久化类将Java对象映射到数据库表中。持久化类需要实现无参构造器、具有标识属性和使用注解或XML进行映射。Hibernate通过Session来管理对象的状态,包括临时状态、持久化状态和游离状态
    2023-04-04
  • Java中的clone()和Cloneable接口实例

    Java中的clone()和Cloneable接口实例

    这篇文章主要介绍了Java中的clone()和Cloneable接口实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 详解Java的内置异常以及创建自定义异常子类的方法

    详解Java的内置异常以及创建自定义异常子类的方法

    这篇文章主要介绍了详解Java的内置异常以及创建自定义异常子类的方法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09

最新评论

?


http://www.vxiaotou.com