Queue接口
- ArrayDeque -》栈
- add(E)/offer(E)
- remove()/poll()
- elemtent()/peek()
Deque接口 双端队列
- Queue Deque
- add(E) addLast(E)
- offer(E) offerLast(E)
- remove() removeFirst()
- poll() pollFirst()
- element() getFirst()
- peek() peekFirst()
Stack Deque
- push(E) addFirst(E)
- 无 offerFirst(E)
- pop() removeFirst()
- 无 pollFirst()
- peek() peekFirst()
- 无 getFirst()
class MyArrayDeque<E>{
private E[] elements;
private int head;
private int tail;
private static int maxSize = 5;
public MyArrayDeque(){
this(5);
}
public MyArrayDeque(int capacity){
elements = (E[])new Object[capacity];
maxSize = capacity;
}
public void add(E value){
if((tail+1) % maxSize == head){
elements = Arrays.copyOf(elements, 2*maxSize);
maxSize = elements.length;
}
elements[tail] = value;
tail = (tail+1) % maxSize;
}
public E remove(){
if(head == tail){
throw new UnsupportedOperationException("the queue has been empty");
}
System.out.println(head);
E result = elements[head];
elements[head] = null;
head = (head +1 )% maxSize;
return result;
}
public E get(){
return elements[head];
}
public String toString(){
StringBuilder strs = new StringBuilder();
for(int i=head; i != tail+1; i=(i+1)%maxSize){
strs.append(elements[i] + " ");
}
return strs.toString();
}
}