java集合之Stack栈基础
Stack堆栈:
是后进先出(LIFO)的对象堆栈,继承Vector—AbstractList--AbstractCollection类,底层是通过数组实现,
boolean empty() 判断堆栈是否为空
E peek() 取堆栈顶部对象,不删除它
E pop() 返回堆栈顶部对象,并删除它
E push(E item) 把对象压入堆栈顶部
int search(Object o) 返回对象在堆栈中位置,以1为基数
源码:
package java.util;
public
class Stack<E> extends Vector<E> {
// 版本ID。这个用于版本升级控制,这里不须理会!
private static final long serialVersionUID = 1224463164541339165L;
// 构造函数
public Stack() {
}
// push函数:将元素存入栈顶
public E push(E item) {
// 将元素存入栈顶。
// addElement()的实现在Vector.java中
addElement(item);
return item;
}
// pop函数:返回栈顶元素,并将其从栈中删除
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
// 删除栈顶元素,removeElementAt()的实现在Vector.java中
removeElementAt(len - 1);
return obj;
}
// peek函数:返回栈顶元素,不执行删除操作
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
// 返回栈顶元素,elementAt()具体实现在Vector.java中
return elementAt(len - 1);
}
// 栈是否为空
public boolean empty() {
return size() == 0;
}
// 查找“元素o”在栈中的位置:由栈底向栈顶方向数
public synchronized int search(Object o) {
// 获取元素索引,elementAt()具体实现在Vector.java中
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
}
示例:
package test;
import java.util.Stack;
import java.util.Iterator;
public class TestStack {
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
stack.push("栈1");
stack.push("栈2");
stack.push("栈3");
stack.push("栈4");
System.out.println(stack);
System.out.println("1-第三个元素:"+stack.search("栈2"));
System.out.println("2-取栈顶元素并删除:"+stack.pop());
System.out.println("3-去栈顶元素不删除:"+stack.peek());
stack.push("栈5");
stack.push("栈6");
System.out.println("4-去栈顶元素不删除:"+stack.peek());
stack.push("栈7");
for(int i=0;i<stack.size();i++){
System.out.println(stack.get(i));//从 栈1 开始输出,也并不是必须从栈顶出
}
//这两种for循环都是从 栈1 开始出,实际上是把stack作为list处理了
for(Iterator<String> it=stack.iterator();it.hasNext();){
System.out.println(it.next());
}
}
}
java集合之Stack栈基础的更多相关文章
- Java集合的Stack、Queue、Map的遍历
Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...
- Java 集合系列Stack详细介绍(源码解析)和使用示例
Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out). java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现 ...
- C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。
1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...
- Java集合之Stack 源码分析
1.简介 栈是数据结构中一种很重要的数据结构类型,因为栈的后进先出功能是实际的开发中有很多的应用场景.Java API中提供了栈(Stacck)的实现,简单使用如下所示 package com.tes ...
- java集合之Vector向量基础
Vector向量: vector类似动态数组,向量和数组类似,但是数组容量一旦确定不可更改,而向量的容量可变.向量只可以保存任何类型对象且容量不限制,数组对元素类型无限制但是容量有限. 适用场合:向量 ...
- Java集合之Stack
Stack是栈,特性是先进后出(FILO,First In Last Out).Stack是继承于Vector(矢量队列),由于Vector是同数组实现的,Stack也是通过数组而非链表. Stack ...
- java集合之ArrayList链表基础
ArrayList可变数组 : arrayList继承AbstractList抽象类,实现list接口,底层基于数组实现.可存放null,除了非同步的之外,大致等同Vector.适用快速访问,复制.序 ...
- java集合之linkedList链表基础
LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...
- 给jdk写注释系列之jdk1.6容器(13)-总结篇之Java集合与数据结构
是的,这篇blogs是一个总结篇,最开始的时候我提到过,对于java容器或集合的学习也可以看做是对数据结构的学习与应用.在前面我们分析了很多的java容器,也接触了好多种常用的数据结构,今天 ...
随机推荐
- localStorage详细总结
一.localStorage简介: 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cooki ...
- 数据库高级:SQL-CREATE-TABLE语句
作者:松软科技(www.sysoft.net.cn) 发布时间:2019/3/17 9:34:51 CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CRE ...
- 松软科技课堂:SQL--FULLJOIN关键字
SQL FULL JOIN 关键字(from:www.sysoft.net.cn) 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行. FULL JOIN 关键字语法 SELECT col ...
- Swift从入门到精通第十五篇 - 类型转换 初识
类型转换(学习笔记) 环境Xcode 11.0 beta4 swift 5.1 类型转换 类型转换是检查实例类型的一种方法,或者检查来自类层级不同的父类或子类一个实例,用 is 和 as 操作符 为类 ...
- u盘重装ubuntu16.04过程遇到的问题
该博文主要记录ubuntu16.04重装过程中分区问题 1. /swap交换区,Logical(逻辑分区),swap area; 一般为物理内存的2倍; 例如你电脑的运行内存是4G, 则/swap可以 ...
- APP功能测试要点(功能测试重点)
APP功能测试要点 1.功能性测试 根据产品需求文档编写测试用例而进行测试,包括客户端的单个功能模块以及功能业务逻辑(功能交互)如:涉及输入的地方需要考虑等价类,边界值,异常或非法等 1.1 安装与卸 ...
- Java查找统计文中字母,单词
package io; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; imp ...
- zookeeper 都有哪些使用场景?
面试题 zookeeper 都有哪些使用场景? 面试官心理分析 现在聊的 topic 是分布式系统,面试官跟你聊完了 dubbo 相关的一些问题之后,已经确认你对分布式服务框架/RPC框架基本都有一些 ...
- MongoDB的可视化工具(Studio 3T)
前面我们已经介绍了MongoDB怎么安装,接下来要安装他的可视化工具——Studio 3T. 先到这下载一个压缩包,百度网盘,https://pan.baidu.com/s/1M8mlWo334 ...
- 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识
作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 ...