Java中栈和队列的实现和API的用法
概述
栈和队列是计算机科学中常用的数据结构。栈是一种后进先出(LIFO)的结构,队列则是一种先进先出(FIFO)的结构。Java 中提供了很多实现栈和队列的类库,本篇攻略将详细讲解 Java 中栈和队列的实现和 API 的用法。
栈的实现和 API 的用法
Java 中栈的实现主要基于接口 java.util.Stack
,该接口继承了接口 java.util.Vector
。所以栈的实现可以使用向量的常规操作方法。
以下是栈的 API:
方法 | 描述 |
---|---|
boolean empty() | 如果栈不包含任何元素,则返回 true,否则返回 false。 |
E peek() | 查找栈顶元素,但是不从栈中移除它。如果栈是空的,将抛出一个异常。 |
E pop() | 移除栈顶元素并返回该元素。如果栈是空的,将抛出一个异常。 |
E push(E item) | 把 item 放到栈顶上。如果插入操作成功,则返回 true;否则返回 false。 |
int search(Object o) | 查找对象在栈中的位置,底部为 1。如果是空栈,则返回 -1。 |
以下是一个简单的示例:
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
stack.push("A");
stack.push("B");
stack.push("C");
stack.push("D");
stack.push("E");
System.out.println("栈的大小: " + stack.size());
System.out.println("栈顶元素: " + stack.peek());
System.out.println("移除栈顶元素: " + stack.pop());
System.out.println("查找元素 B 的位置: " + stack.search("B"));
}
}
输出结果为:
栈的大小: 5
栈顶元素: E
移除栈顶元素: E
查找元素 B 的位置: 3
队列的实现和 API 的用法
Java 中队列的实现主要基于接口 java.util.Queue
,该接口继承了接口 java.util.Collection
。队列也可以使用集合的常规操作方法。
以下是队列的 API:
方法 | 描述 |
---|---|
boolean add(E element) | 将指定的元素插入此队列(如果立即可行且不会违反容量限制),成功时返回 true。 |
E element() | 获取,但不移除由此队列表示的队列的头。 |
boolean offer(E element) | 将指定的元素插入此队列(如果立即可行且不会违反容量限制)。 |
E peek() | 获取但不移除此队列的头。如果此队列为空,则返回 null。 |
E poll() | 获取获取并移除此队列的头,如果此队列为空,则返回 null。 |
E remove() | 获取并移除此队列的头。如果此队列为空,则抛出一个 NoSuchElementException。 |
以下是一个简单的示例:
import java.util.LinkedList;
import java.util.Queue;
public class QueueDemo {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<String>();
queue.add("A");
queue.add("B");
queue.add("C");
queue.add("D");
queue.add("E");
System.out.println("队列的大小: " + queue.size());
System.out.println("队列头部元素: " + queue.element());
System.out.println("移除队列头部元素: " + queue.remove());
System.out.println("查找元素 B 的位置: " + ((LinkedList<String>) queue).indexOf("B"));
}
}
输出结果为:
队列的大小: 5
队列头部元素: A
移除队列头部元素: A
查找元素 B 的位置: 0
结语
本篇攻略中,我们讲解了 Java 中栈和队列的实现、基本 API,并给出了两个示例,希望对读者有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中栈和队列的实现和API的用法(详解) - Python技术站