/** @param base */ @SafeVarargs public LinkedQueue(final T... base) { if (base.length == 0) clear(); else { chomped = false; this.base = new Node<T>(base[0]); end = this.base; for (int i = 1; i < base.length; i++) enqueue(base[i]); } }
/** @return */ public LinkedQueue<T> chompClone() { final LinkedQueue<T> q = new LinkedQueue<>(); Node<T> n = base; while (n != this.end) { q.enqueue(n.value); n = n.tail; } if (chomped) q.chomp(); return q; }
/** @return */ public LinkedQueue<T> enqueueClone(final T end) { final LinkedQueue<T> q = new LinkedQueue<>(); for (final T n : this) q.enqueue(n); q.enqueue(end); return q; }
@Override public LinkedQueue<T> clone() { final LinkedQueue<T> q = new LinkedQueue<>(); for (final T n : this) q.enqueue(n); return q; }
/** * @param n * @return */ public LinkedQueue<T> without(final T n) { final LinkedQueue<T> output = new LinkedQueue<>(); for (final T v : this) if (!v.equals(n)) output.enqueue(v); return output; }
@Deprecated @Override public boolean add(T value) { enqueue(value); return true; }