用Java实现简单 deque
时间: 2023-11-27 19:02:29 浏览: 94
简单的JavaDemo
以下是一个简单的双端队列实现,使用Java语言:
```java
public class Deque<T> {
private LinkedList<T> deque = new LinkedList<>();
public void addFirst(T item) {
deque.addFirst(item);
}
public void addLast(T item) {
deque.addLast(item);
}
public T removeFirst() {
if (deque.isEmpty()) {
throw new NoSuchElementException();
}
return deque.removeFirst();
}
public T removeLast() {
if (deque.isEmpty()) {
throw new NoSuchElementException();
}
return deque.removeLast();
}
public T getFirst() {
if (deque.isEmpty()) {
throw new NoSuchElementException();
}
return deque.getFirst();
}
public T getLast() {
if (deque.isEmpty()) {
throw new NoSuchElementException();
}
return deque.getLast();
}
public int size() {
return deque.size();
}
public boolean isEmpty() {
return deque.isEmpty();
}
}
```
这个实现使用了Java内置的双向链表类`LinkedList`,因为它已经实现了添加、删除、获取元素的方法,所以我们只需要简单地将它们包装在`Deque`类的方法中即可。这个实现支持添加和删除队列头和尾的元素,以及获取队列头和尾的元素。此外,它还实现了`size()`和`isEmpty()`方法,用于获取队列的大小和判断队列是否为空。
这个实现的一个示例用法如下:
```java
Deque<Integer> deque = new Deque<>();
deque.addFirst(1);
deque.addLast(2);
deque.addFirst(3);
deque.addLast(4);
System.out.println(deque.removeFirst()); // 输出 3
System.out.println(deque.removeLast()); // 输出 4
System.out.println(deque.size()); // 输出 2
System.out.println(deque.getFirst()); // 输出 1
System.out.println(deque.getLast()); // 输出 2
```
这个示例首先创建了一个`Deque`实例,并向队列头和尾添加了一些元素。然后,它依次删除队列头和尾的元素,并输出它们的值。最后,它获取队列的大小、队列头和尾的元素,并输出它们的值。
阅读全文