java基础----java中的栈stack
目录
前言
今天接触到了栈,stack,学习并做了记录
一、Stack
- stack定义:栈是一种只能在一端进行插入或删除操作的线性表。(先进后出表)
-
Stack来自于Vector,那么显然stack的底层实现是数组。
二、Stack的方法
Stack的实现非常简单,仅有一个构造方法,五个实现方法(从Vector继承而来的方法不算与其中),同时其实现的源码非常简单
/**
* 构造函数
*/
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;
}
参考:https://chenssy.blog.csdn.net/article/details/37756539
三、测试
package com.cnzz.mytest.test;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.util.Stack;
/**
* ************************************************************
* Copyright © 2020 cnzz Inc.All rights reserved. * **
* ************************************************************
*
* @program: demo
* @description: java的栈stack
* @author: cnzz
* @create: 2020-11-12 11:07
**/
@Slf4j
public class StackDemo {
@Test
public void stackTest() {
//java中的栈的使用测试
//创建一个栈
Stack stack = new Stack();
stack.push("a");
stack.push(1);
log.info("{}", stack);
//创建一个Integer 栈
Stack<Integer> intStack = new Stack<Integer>();
//push( num) //入栈
//pop() //栈顶元素出栈
//empty() //判定栈是否为空
//peek() //获取栈顶元素
//search(num) //判端元素num是否在栈中,如果在返回1,不在返回-1。
log.info("判断栈是否为空{}", intStack.empty());
intStack.push(1) ;
intStack.push(2);
intStack.push(3);
log.info("入栈{}", intStack);
log.info("获取栈顶元素{}", intStack.peek());
log.info("判端元素num是否在栈中{}", intStack.search(1));
intStack.pop();
log.info("栈顶元素出栈{}", intStack);
}
}
四、stack的简单应用
排列组合数学问题 https://blog.csdn.net/xinpz/article/details/109728624
总结
学习并做记录