import java.util.*; public class Q<E> { private final Deque<E> queue; private final int size; public Q(int numElements) { this.size = numElements; queue = new ArrayDeque<E>(this.size); } // προσθήκη στο τέλος της ουράς public boolean push(E e) { return !isFull() && queue.offer(e); } // αφαίρεση από την αρχή της ουράς public E pop() { return queue.poll(); } // προσπέλαση της αρχής της ουράς public E peek() { return queue.peek(); } public boolean isEmpty() { return queue.isEmpty(); } public boolean isFull() { return queue.size() == size; } @Override public String toString() { return queue.toString(); } public static void main(String[] args) { Q<Integer> q = new Q<>(3); q.push(10); q.push(20); q.push(30); System.out.println(q); System.out.println(q.pop()); System.out.println(q.peek()); System.out.println(q); Deque<Integer> deque = new ArrayDeque<>(); deque.offerLast(10); deque.offerLast(20); deque.offerLast(30); System.out.println(deque); System.out.println(deque.peekFirst()); // επιστρέφει null αν η ουρά είναι άδεια System.out.println(deque.peekLast()); // επιστρέφει null αν η ουρά είναι άδεια System.out.println(deque.getFirst()); // εμφανίζει NoSuchElementException αν η ουρά είναι άδεια System.out.println(deque.getLast()); // εμφανίζει NoSuchElementException αν η ουρά είναι άδεια System.out.println(deque.pollFirst()); System.out.println(deque.pollLast()); System.out.println(deque.removeFirst()); System.out.println(deque); } }