@Override boolean remove(int index) { assert index >= 0; assert index < N; long old = queue; queue &= ~(1L << index); if (old == queue) { return false; } if (min == index) { min = nextSetBit(min + 1); } return true; }
@Override public boolean removeAll(Collection<?> c) { long mask = 0; for (Object o : c) { mask |= (1L << getOrdinal(o)); } long old = queue; queue &= ~mask; min = nextSetBit(min); return old != queue; }
@Override public boolean retainAll(Collection<?> c) { long mask = 0; for (Object o : c) { mask |= (1L << getOrdinal(o)); } long old = queue; queue &= mask; min = nextSetBit(min); return old != queue; }
@Override public boolean addAll(Collection<? extends E> c) { long mask = 0; for (Object o : c) { mask |= (1L << getOrdinal(o)); } long old = queue; queue |= mask; if (old == queue) { return false; } min = nextSetBit(0); return true; }