-
2021-03-01 08:50:42
堆栈(stack)是线性表的一种,只能在该线性表的表尾进行插入、获取或删除的操作。该线性表具有LIFO(后进先出)的特点,那么Java中如何实现这一功能呢,呵呵呵,Java已经为我们提供了API——Stack,Stack类继承Vector类。下面通过一个例子来认识一下该API:
import java.util.Stack;
public class TestStack {
public static void main(String[] args) {
Stack stack = new Stack();
stack.push("a");//将数据压入堆栈顶部,其作用于下面addElement一样
stack.addElement("b");
stack.push("c");
stack.push("d");
stack.push("e");
if(!stack.empty()){//判断堆栈是否为空
System.out.println(stack.peek());//输出e。获取堆栈顶部的对象(Vector 对象的最后一项),但不从堆栈中移除该对象,如果堆栈为空,则抛出EmptyStackException异常
System.out.println(stack.pop()); //输出e。获取堆栈顶部的对象(Vector 对象的最后一项),并从堆栈顶部移除该对象,如果堆栈为空,则抛出EmptyStackException异常
System.out.println(stack.pop()); //输出d。
System.out.println(stack.search("c"));//获取指定对象在堆栈中的位置,以 1 为基数,如果没有则返回-1
}
}
}
原文:http://blog.csdn.net/gaohuanjie/article/details/45075261
更多相关内容 -
java中栈和队列的实现和API的用法(详解)
2020-08-30 16:22:17下面小编就为大家带来一篇java中栈和队列的实现和API的用法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
java 栈对象api和队列api的使用
2018-07-23 21:54:06栈的实现,有两个方法:一个是用java本身的集合类型Stack类型;另一个是借用LinkedList来间接实现Stack。 1.Stack实现 有关Stack的具体知识可以参考:http://www.cnblogs.com/skywang12345/p/3308852.html 直接...一、栈的实现
栈的实现,有两个方法:一个是用java本身的集合类型Stack类型;另一个是借用LinkedList来间接实现Stack。
1.Stack实现
有关Stack的具体知识可以参考:http://www.cnblogs.com/skywang12345/p/3308852.html
直接用Stack来实现非常方便,常用的api函数如下:
boolean isEmpty() // 判断当前栈是否为空 synchronized E peek() //获得当前栈顶元素 synchronized E pop() //获得当前栈顶元素并删除 E push(E object) //将元素加入栈顶 synchronized int search(Object o) //查找元素在栈中的位置,由栈低向栈顶方向数
2.LinkedList实现
LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
LinkedList 实现 List 接口,能对它进行队列操作。
LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。当LinkedList被当做栈来使用时,常用api及对应关系如下:
栈方法 等效方法 push(e) addFirst(e) pop() removeFirst() peek() peekFirst()
isEmpty() //判断是否为空
二、队列的实现
java中虽然有Queue接口,单java并没有给出具体的队列实现类,而Java中让LinkedList类实现了Queue接口,所以使用队列的时候,一般采用LinkedList。因为LinkedList是双向链表,可以很方便的实现队列的所有功能。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用
element()或者peek()方法。
java中定义队列 一般这样定义: Queue<E> queue = new LinkedList<E>();
当采用LinkedList来实现时,api的使用和对用关系如下:
队列方法 等效方法 offer(e) offer(e)/offerLast(e) //进队列,将元素加入队列末尾 poll() poll()/pollFirst() //获取队列头的元素并移除 peek() peek()/peekFirst() //获取队列头的元素
isEmpty() //判断是否为空
-
java堆栈队列api
2022-05-06 22:45:56java堆栈队列api栈队列链表实现 栈 Stack<Integer> stack = new Stack<>(); // 新建堆栈 stack.push(1); // 向栈顶压入元素 stack.pop(); // 从栈中弹出栈顶元素 stack.peek(); // 查看栈顶元素不弹出 ...
栈
Stack<Integer> stack = new Stack<>(); // 新建堆栈 stack.push(1); // 向栈顶压入元素 stack.pop(); // 从栈中弹出栈顶元素 stack.peek(); // 查看栈顶元素不弹出 stack.empty(); // 判断是否是空栈 stack.search(2); // 查找某个值是否在栈中,如果存在,返回对象在此堆栈上的从1开始的位置。栈顶元素为对象时,返回1。若不存在,返回-1。
队列链表实现
Queue<String> queue = new LinkedList<String>(); // 创建队列对象 queue.offer("a"); // 添加元素 queue.offer("b"); queue.offer("c"); System.out.println(queue.poll()); // 返回第一个元素,并在队列中删除 System.out.println(queue.element()); // 返回第一个元素 System.out.println(queue.peek()); // 返回第一个元素
-
java中栈和队列的实现和API的用法
2018-07-04 22:42:36在java中要实现栈和队列,需要用到java集合的相关知识,特别是Stack、LinkedList等相关集合类型。...1.Stack实现直接用Stack来实现非常方便,常用的api函数如下:boolean isEmpty() // 判断当前栈是否为空syn...在java中要实现栈和队列,需要用到java集合的相关知识,特别是Stack、LinkedList等相关集合类型。
一、栈的实现
栈的实现,有两个方法:一个是用java本身的集合类型Stack类型;另一个是借用LinkedList来间接实现Stack。
1.Stack实现
官方建议:使用栈尽量使用ArrayDeque:
Deque接口及其实现提供了LIFO堆栈操作的完整和更
Deque<Integer> stack=new ArrayDeque<Integer>();
直接用Stack来实现非常方便,常用的api函数如下:
boolean isEmpty() // 判断当前栈是否为空
synchronized E peek() //获得当前栈顶元素
synchronized E pop() //获得当前栈顶元素并删除
E push(E object) //将元素加入栈顶
synchronized int search(Object o) //查找元素在栈中的位置,由栈低向栈顶方向数2.LinkedList实现
LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
LinkedList 实现 List 接口,能对它进行队列操作。实现Deque接口,即能将LinkedList当作双端队列使用。
当LinkedList被当做栈来使用时,常用api及对应关系如下:
栈方法 等效方法
push(e) addFirst(e)
pop() removeFirst()
peek() peekFirst() isEmpty() //判断是否为空二、队列的实现
java中虽然有Queue接口,单java并没有给出具体的队列实现类,而Java中让LinkedList类实现了Queue接口,所以使用队列的时候,一般采用LinkedList。因为LinkedList是双向链表,可以很方便的实现队列的所有功能。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用element()或者peek()方法。
java中定义队列 一般这样定义: Queue<E> queue = new LinkedList<E>();
当采用LinkedList来实现时,api的使用和对用关系如下:
队列方法 等效方法
offer(e) offer(e)/offerLast(e) //进队列,将元素加入队列末尾
poll() poll()/pollFirst() //获取队列头的元素并移除
peek() peek()/peekFirst() //获取队列头的元素 isEmpty() //判断是否为空Queue <Integer> queue = new LinkedList <Integer>(); queue.offer(1); queue.offer(2); queue.offer(3); System.out.println(queue); System.out.println(queue.peek()); queue.poll(); System.out.println(queue);
双向队列
Deque <Integer> deque = new LinkedList <Integer>(); deque.offer(1); deque.offer(2); deque.offerFirst(3); System.out.println(deque); deque.pollLast(); System.out.println(deque);
-
Java | Java常用API方法总结
2021-08-29 16:51:09个人总结的Java常用API手册汇总常用APIJavaAPI1 java.langStringStringBuilderIntegerparseXxxMathObjectSystemThrowableThreadRunnable/接口Class\*reflect反射相关FieldConstructor\MethodClassLoader2 java.... -
Java的Stack常用API
2021-10-01 17:03:20API 功能 push() 将元素压入到栈顶 pop() 取出栈顶元素 peek() 查看栈顶元素,但不从栈中移除它 isEmpty() 判断集合是否为空 size() 获取集合中元素的数量 toArray() 将栈转换成数组 -
Java SE编程入门教程 java 常用API(共22页).pptx
2021-12-04 10:47:03Java SE编程入门教程 java 常用API(共22页).pptx Java SE编程入门教程 javaGUI编程快速入门(1)(共82页).pptx Java SE编程入门教程 java包装器(共9页).pptx Java SE编程入门教程 java反射机制(共16页).pptx ... -
java-rest-api
2021-03-03 11:47:28Java Rest API 描述 这是一个简单的应用程序,允许用户输入2个数字和一个操作。 在后端计算结果。 数字,运算和结果可作为REST API使用。 目录 安装 在根目录中运行java -version和mvn -version ,以确保在计算机上... -
java中的栈和队列的基础API
2016-05-06 19:41:23java 中的队列和栈 一:队列 (1) -->队列是常用的数据结构,可以看作特殊的线性表,队列限制了线性表的访问方式:只能从线性表的一段(offer)元素,从另一段去除(poll)元素- --->队列:先进先出 --->JDK提供了... -
java api1.6
2019-03-04 19:47:31java api1.6 Java API通过支持平台无关性和安全性,使得Java适应于网络应用。Java API是运行库的集合,它提供了一套访问主机系统资源的标准方法。 运行Java程序时,虚拟机装载程序的class文件所使用的Java API ... -
java中的栈
2022-01-16 12:15:31本文阐述了对栈数据结构的理解,展示了继承关系,针对Stack被弃置的问题展开了探讨,具体解释了被弃置的原因,如何替代,使用队列实现栈的算法以及在面试中如何看待Stack。 -
Java如何定义栈
2022-03-31 22:26:47Java中两种定义栈的方式。 -
java技术栈梳理
2022-03-26 17:19:23整理的java技术栈知识体系 -
JAVA常用API整理
2018-10-22 23:34:42一、JAVA常用API java.lang.Math 提供sin, cos, tan, exp, log, log10 等类方法,PI和E等类字段 java.lang.String(StringBuilder线程不安全,StringBuffer线程安全) char charAt(int index) 返回给定位置的... -
JVM进阶(一):初识 JAVA 栈
2017-01-08 14:12:50JVM进阶(一)——初识JAVA栈 若想使自己编写的Java程序高效运行,以及进行正确、高效的异常诊断,JVM是不得不谈的一个话题。本”JVM进阶“专栏大部分内容均来源于经典书籍《深入理解Java虚拟机》。 下面... -
java8集合源码-spring_rest_api:带有RESTfulAPI的SpringBoot
2021-06-04 17:43:11java8集合源码1. Spring RESTful API 使用Spring RESTful ( Self-descriptive , HATEOAS ) API http://localhost:8080/docs/index.html 使用 ascii-docs 文档信息 1.1. 技术栈 Spring boot Spring framework Spring ... -
java技术栈必学有哪些?
2021-03-07 05:42:05想要高效率的学习java,跟着当前流行的技术栈学习是再好不过了,这样就能时时站在技术前端,下面就来了解下java学习必定的技术栈。1、语法:必须比较熟悉,在编写代码的时候,IDE(Integrated DevelopmentEnvironment... -
JAVA API官方中文文档
2012-07-17 23:18:39Java API通过支持平台无关性和安全性,使得Java适应于网络应用。Java API是运行库的集合,它提供了一套访问主机系统资源的标准方法。 运行Java程序时,虚拟机装载程序的class文件所使用的Java API class文件。所有... -
LeetCode算法常用Java API
2021-10-11 22:45:29在刷题中,各种数据结构是我们常常用到的,例如栈实现迭代、哈希存储键值对等等,我们来看看常用集合和相关api。 类/接口 描述 方法 String 字符串 charAt toCharArray split substring indexOf lastIndexOf... -
Java中Deque双端队列的api总结
2022-04-27 10:43:57API如下: Deque对头部操作 抛出异常 返回特殊值 插入 addFirst() offerFirst() 删除 removeFirst() pollFirst() 查看 getFirst() peekFirst() Deque对尾部操作 抛出异常 返回特殊值 插入 ... -
栈、队列、小根堆和大根堆的Java API使用
2019-05-15 21:43:44在OJ上练习编程的时候,有时对栈、队列、堆这些基础数据结构的实现不是考察的重点,而只是要使用这些数据结构解决问题,此时我们熟练掌握语言提供的数据结构API即可。下面对Java中的栈、队列、小根堆和大根堆做一个... -
Java 9 线程栈遍历 API
2018-05-31 08:50:42什么是线程栈继续纠缠 Java 9 的新特性,仍然是一个边角料,即 Java 9 增加了对线程栈遍历的 API。那么什么是线程栈,JVM 在创建每一个线程的同时都会创建一个私有的虚拟机栈,每一桢代表着一个方法调用,每次方法的...