java源码-Stack
开篇
Stack是List的实现类当中最简单的,用一句话形容Stack那就是Stack在Vector的基础上采用Vector的特性来达到Stack的目标。
Stack是一种后进先出的数据结构类型(数组)(last in frist out);实现了Vector;在Vector的基础添加了五个方法:
- push(E item) 把项压入堆栈顶部。
- pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。
- peek() 查看堆栈顶部的对象,但不从堆栈中移除它。
- boolean empty() 测试堆栈是否为空。
- int search(Object o)#返回对象在堆栈中的位置,以 1 为基数。
Stack类图
Stack源码分析
Stack的源码非常简单,就是在Vector提供的接口基础上作了一层封装。
- push操作直接调用Vector的addElement()方法在尾部添加元素
- pop操作直接调用Vector的removeElementAt()方法移除尾部的元素
- Stack的操作全部是线程安全,使用synchronized变量进行修饰
public class Stack<E> extends Vector<E> { public Stack() { } public E push(E item) { addElement(item); return item; } public synchronized E pop() { E obj; int len = size(); obj = peek(); removeElementAt(len - 1); return obj; } public synchronized E peek() { int len = size(); if (len == 0) throw new EmptyStackException(); return elementAt(len - 1); } public boolean empty() { return size() == 0; } public synchronized int search(Object o) { int i = lastIndexOf(o); if (i >= 0) { return size() - i; } return -1; } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)
ParisGabriel 每天坚持手写一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 存储引擎(处理表的处理器) 基本操作: 查看所有存储引擎 showengines; 查看已有 表的存储 引擎 show create table 表名; 创建表指定引擎: create table 表名()engine=myisam; 已有表 添加引擎: altertable 表名engine=innodb; MySQL锁:(自动加锁) 目的: 解决客户端并发访问的冲突问题 锁分类: 类型: 1. 读锁( 共享锁) select:加读锁后别人 不能更改表记录,但 可以查询 2. 写锁( 互次锁、排他锁) insert、delete、update :加写锁后别人 不能查也不能改 锁粒度: 1.表级锁: myisam 1.行级锁: innodb 常用的存储引擎特点 InnoDB特点: 1.共享表空间 表名 .frm:表结构和索引文件 表名 .idb:表...
- 下一篇
初探JAVA代码在虚拟机中的运行机制
前言 从这篇文章开始,后面我们将持续介绍JAVA虚拟机的工作原理。作为一名Android程序员,我们都知道Java代码有很多种运行方式,比如:可以在命令行中运行,可以在开发工具中运行,可以以jar文件的形式运行,甚至可以在网页中运行。这些执行的方式都离不开JRE(Java Runtime Environment) 即Java运行时环境。 我们平时开发之前搭建环境安装的JDK里面也有JRE,下面这张图片中我们可以看出JRE包含Java虚拟机和Java的一些核心组件库。 什么是JAVA虚拟机 我们常说我们写的代码是在JAVA虚拟机上运行的,到底什么是Java虚拟机昵? JAVA虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算功能来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还有相应的指令系统。JVM屏蔽了与具体操作系统平台的相关信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在各种平台上不加修改的运行。 这么说固然没有毛病,但是感觉有些笼统,感觉这篇文章中写的不错: 深入理解Java虚拟机到底是什么 JAVA为什么要...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- 2048小游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程