@Override public T selectAny() { Iterator<T> it = backend.iterator(); if (it.hasNext()) { return it.next(); } else { return null; } }
@Override public Collection<T> remove(Object element) { if (element == null) { return this; } Builder<T, ? extends Collection<T>> builder = createBuilder(); Iterator<T> it = backend.iterator(); while (it.hasNext()) { T e = it.next(); if (element.equals(e)) { return builder.addAll(it).build(); } else { builder.add(e); } } return this; }
@Override public Iterator<T> iterator() { Iterator<T> it = backend.iterator(); return new Iterator<T>() { // Note: this implementation does not override (willingly) the // 'remove' method which (by default) throws an // UnsupportedOperationException. @Override public boolean hasNext() { return it.hasNext(); } @Override public T next() { return it.next(); } }; }