ArrayList实现队列与堆栈
时间: 2023-08-20 11:09:58 浏览: 46
ArrayList 可以用于实现队列和堆栈,因为它可以动态地增长和缩小,使得我们可以很方便地添加、删除和访问元素。
实现队列:
队列是一种先进先出(FIFO)的数据结构,可以用 ArrayList 实现。我们可以使用 add() 方法在队列的尾部添加元素,使用 remove(0) 方法从队列的头部移除元素,使用 get(0) 方法获取队列的头部元素。
下面是一个使用 ArrayList 实现队列的示例代码:
```java
import java.util.ArrayList;
public class QueueWithArrayList {
private ArrayList<Integer> queue = new ArrayList<Integer>();
public void enqueue(int value) {
queue.add(value);
}
public int dequeue() {
if (queue.isEmpty()) {
throw new RuntimeException("Queue is empty");
}
return queue.remove(0);
}
public int peek() {
if (queue.isEmpty()) {
throw new RuntimeException("Queue is empty");
}
return queue.get(0);
}
public boolean isEmpty() {
return queue.isEmpty();
}
public int size() {
return queue.size();
}
}
```
实现堆栈:
堆栈是一种先进后出(LIFO)的数据结构,也可以用 ArrayList 实现。我们可以使用 add() 方法在堆栈的顶部添加元素,使用 remove(size()-1) 方法从堆栈的顶部移除元素,使用 get(size()-1) 方法获取堆栈的顶部元素。
下面是一个使用 ArrayList 实现堆栈的示例代码:
```java
import java.util.ArrayList;
public class StackWithArrayList {
private ArrayList<Integer> stack = new ArrayList<Integer>();
public void push(int value) {
stack.add(value);
}
public int pop() {
if (stack.isEmpty()) {
throw new RuntimeException("Stack is empty");
}
return stack.remove(stack.size()-1);
}
public int peek() {
if (stack.isEmpty()) {
throw new RuntimeException("Stack is empty");
}
return stack.get(stack.size()-1);
}
public boolean isEmpty() {
return stack.isEmpty();
}
public int size() {
return stack.size();
}
}
```