Java 实现 栈

 1 package Test;
 2 import java.util.*;
 3 public class Stack_test {
 4
 5     public static void main(String[] args) {
 6         // TODO 自动生成的方法存根
 7         //输入与字符处理
 8         Scanner scanner = new Scanner(System.in);
 9         String string = scanner.nextLine();
10         String[] string2 = string.split("");
11         //声明
12         Stack<String> stack = new Stack<String>();
13         //将字符push进栈
14         for (int i = 0; i < string2.length; i++) {
15             stack.push(string2[i]);
16         }
17         //输出
18         System.out.println("stack is: " + stack);
19         //pop出栈
20         System.out.println("pop :" + stack.pop());
21         System.out.println("stack is: " + stack);
22     }
23
24 }

输出结果为:

abcdefg
stack is: [a, b, c, d, e, f, g]
pop :g
stack is: [a, b, c, d, e, f]

代码中:

1 Stack<String> stack = new Stack<String>();

为声明该栈,需要 import java.util.Stack;

建立了栈之后,有多种方法可供使用。

empty()

  boolean 类型,用于测试该栈是否为空。true为空,false不空。

peek()

  查看栈顶元素,但是不删除。

pop()

  返回栈顶元素,删除该元素。

push()

  将元素push进栈

search(Object o)

  返回要查找的元素的位置,返回值为int型。

时间: 2024-10-11 08:49:56

Java 实现 栈的相关文章

JAVA虚拟机栈

JAVA虚拟机栈几个重要概念 java 虚拟机栈 = java virtual machine stacks = jvms 1.JVMS 线程私有,生命周期与线程相同 2.JVMS 描述的是JAVA方法执行的内存模型:JVMS在方法执行时会创建一个"栈帧" stack frame,用于记录局部变量表.操作数栈.动态链接.方法出口等,每一个方法从调用到完成的过程,就是一个栈帧在JVMS中入栈到出栈的过程 3.局部变量表存放基本数据类型.对象引用.returnAddress(字节码指令地址

Java虚拟机栈和本地方法栈

Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java本地方法栈的特征 线程私有 后进先出(LIFO)栈 作用是支撑Native方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 有一些虚拟机(如HotSpot)将Java虚拟机栈和本地方法栈合并实现 栈帧的概念和特征 Java虚拟机栈中存储的

Java中栈的两种实现

栈是先进后出的数据结构,主要有弹栈,入栈两种操作. 数组版 1 package stack; 2 3 /*** 4 * 栈的数组实现--java 5 * 栈是先进后出的数据结构,主要有弹栈,入栈两种操作 6 * 由于该栈是由数组实现的,数组的长度是固定的,当栈空间不足时, 7 * 必须将原数组数据复制到一个更长的数组中, 8 * 考虑到入栈时或许需要进行数组复制,平均需要复制N/2个数据项, 9 * 故入栈的时间复杂度为O(N),出栈的时间复杂度依然为O(1) 10 * @author bink

java的栈图形演示

1 import java.awt.*; 2 import javax.swing.*; 3 import java.awt.event.*; 4 /* 5 指示发生了组件定义的动作的语义事件.当特定于组件的动作(比如被按下)发生时,由组件(比如 Button)生成此高级别事件. 6 事件被传递给每一个 ActionListener 对象,这些对象是使用组件的 addActionListener 方法注册的,用以接收这类事件. 7 所以在给TextField类添加 ActionListener

java技术栈

java技术栈 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序 1.2 二叉查找树.红黑树.B树.B+树.LSM树(分别有对应的应用,数据库.HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 1.equals方法用于比较对象的内容是否相等(覆盖以后) 2.hashcode方法只有在集合中

Java函数调用栈

Java的函数调用栈就是Java虚拟机栈,它是线程私有的,与线程一同被创建,用于存储栈帧. 栈帧随着方法的调用而创建,随着方法的结束而销毁.可以说栈帧是方法的抽象. 于是,可以通过打印出Java虚拟机栈中的栈帧信息来了解函数调用过程.用于实现这个过程的Java代码如下: package methodcall; public class Methods { public void method1() { method2(); } public void method2() { method3();

Java Stack栈和Heap堆的区别

首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆. 在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语: 堆存储: heapstorage 堆存储分配: heapstorage allocation 堆存储管理: heap storage management 栈编址: stack addressing 栈变换:stack transformation 栈存储器:stack memory 栈单元: stack cell 接着,总结在Jav

java数据结构栈

栈的原则是先进后出,比如一堆摞起来的书,后放上去的会被最先拿到. 栈的特点是每次只允许访问一个元素. 栈是一种抽象出来的数据结构,它的底层存储依赖于数组和链表,下面列出它的两种实现 public interface Stack <T>{ boolean isEmpty(); void clear(); int length(); boolean push(T obj); T pop(); boolean hashNext(); } public class ArrayStack<T>

java 虚拟机栈

与程序计数器一样,Java虚拟机栈也是线程私有的,他的生命周期与线程相同.虚拟机栈描述的是Java执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法出口等信息.每个方法被调用直至执行完成的过程,就对应一个虚拟机栈由入栈到出栈的过程. 局部变量表存放了编译期可知的各种基本数据类型(boolean,byte,char,short,int,long,double),对象引用(reference类型,他不同于对象本身,根据不同的虚拟机实现,它可能是一个指向

java实现栈(可以无限put)

一直想用java实现栈.队列,可是没时间,马上要找实习了,就复习了一下算法,实现了一个简单的栈,代码还是有问题的,有兴趣的兄弟帮忙改正 问题:多线程的话pop和push只能有一个方法被执行需要加互斥变量 import java.util.Arrays; public class Stack<Item> { private transient Object[] data;// 存储数据 private int top;// 表示栈顶元素 private int oldCapacity; publ