java.util.Stack是通过继承java.util.Vector来实现的,既然java.util.Vector这个东西已经基本上废弃了,所以java.util.Stack很尴尬,多人用,但是却不是最好的实现。

原因很简单,Vector是ArrayList的线程安全版本,Vector也用数组实现,所以说,对于Stack,你觉得用数组还是链表好,当然是链表啦,一看就知道Vector和Stack的出生要比ArrayList和LinkedList要早。

我们常用的Stack是net.windview.util.Stack
很可惜,我只找到了对应的jar包,source code没有找到,那么,就让我大概手写一下吧:

import java.util.LinkedList;
public class Stack<T> {private LinkedList<T> storage = new LinkedList<T>();public void push(T v){ storage.addFirst(v); }public T peek(){ return storage.getFirst(); }public T pop(T v){ return storage.removefirst(); }public boolean empty(){ return storage.isEmpty(); }public String toString(){ return storage.toString(); }
}

龟龟,这也太简单了吧,所以说如果遇到需要Stack的时候,自己写一个也十分简单。

容器源码分析之Stack(四)相关推荐

  1. 容器源码分析之TreeSet(五)

    HashSet是借助于HashMap的key不允许重复这个特性来实现的.HashMap是操作键值对,而HashSet是操作HashMap的key完成相关操作,TreeSet比HashSet加了排序的功 ...

  2. Spring IOC 容器源码分析

    Spring IOC 容器源码分析 创建时间: 2017-11-15 00:00:00 [TOC] Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring ...

  3. Spring IOC 容器源码分析系列文章导读

    1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅 ...

  4. Spring IOC 容器源码分析 - 余下的初始化工作

    1. 简介 本篇文章是"Spring IOC 容器源码分析"系列文章的最后一篇文章,本篇文章所分析的对象是 initializeBean 方法,该方法用于对已完成属性填充的 bea ...

  5. Spring IOC 容器源码分析 - 填充属性到 bean 原始对象

    1. 简介 本篇文章,我们来一起了解一下 Spring 是如何将配置文件中的属性值填充到 bean 对象中的.我在前面几篇文章中介绍过 Spring 创建 bean 的流程,即 Spring 先通过反 ...

  6. Spring IOC 容器源码分析 - 循环依赖的解决办法

    1. 简介 本文,我们来看一下 Spring 是如何解决循环依赖问题的.在本篇文章中,我会首先向大家介绍一下什么是循环依赖.然后,进入源码分析阶段.为了更好的说明 Spring 解决循环依赖的办法,我 ...

  7. Spring IOC 容器源码分析 - 创建原始 bean 对象

    1. 简介 本篇文章是上一篇文章(创建单例 bean 的过程)的延续.在上一篇文章中,我们从战略层面上领略了doCreateBean方法的全过程.本篇文章,我们就从战术的层面上,详细分析doCreat ...

  8. Spring IOC 容器源码分析 - 创建单例 bean 的过程

    1. 简介 在上一篇文章中,我比较详细的分析了获取 bean 的方法,也就是getBean(String)的实现逻辑.对于已实例化好的单例 bean,getBean(String) 方法并不会再一次去 ...

  9. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

最新文章

  1. ★核心关注点_《信息系统项目管理师考试考点分析与真题详解》
  2. python csv性能_性能:Python pandas DataFrame.to_csv附加逐渐变慢
  3. 51CTO -- 网络自学的瓶颈期
  4. boost::spirit模块实现自定义嵌入式容器数据的测试程序
  5. 爬虫小工具合集|不会编程也能爬数据
  6. Mongodb c#增删改查
  7. 渐变,类Flash的菜单
  8. 从ASCII到UTF-8——字符集到底是什么?
  9. 《Windows Phone 7 用户界面设计和交互指南 v2.0》
  10. excel数据库_从案例说excel如何实现数据库管理
  11. 西门子scout中文手册_西门子LOGO!是什么?它有哪些应用?
  12. Android Java基础面试题
  13. View是什么,什么是View?
  14. 微信小程序全局数据共享学习笔记
  15. TIMIT dataset - The DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus
  16. OC5038内置 MOS 开关降压型 LED 恒流驱动器
  17. 计算机中怎么改邮箱地址,谁可以讲讲如何设置电脑邮箱
  18. ZDNS参与的《根服务器运行机构不端行为研究报告》正式发布,全球根服务器安全治理又进一步
  19. 初窥Xcode4 -- Xcode4主题样式、快捷键等常用设置
  20. HBuilder X这个开发工具我写完代码后,我让他在浏览器运行,就是不显示出来,大佬们求解答,内置配置浏览器是这样的。求解答拜托.

热门文章

  1. 简单Hook SYSENTER
  2. 使用IDA 进行远程调试
  3. 【Boost】boost库中function的用法
  4. 【Boost】boost库中thread多线程详解9——thread_specific_ptr线程局部存储
  5. cocos2d-x初探学习笔记(6)--场景间切换效果
  6. Python中菱形继承的MRO顺序及property属性
  7. shell编程之正则表达式
  8. ​如何实现简单高效的移动剪辑框架
  9. shell if else 用法 syntax error near unexpected token `then'
  10. ubuntu 16.04 kvm 桥接模式创建虚拟机