类com.google.common.collect.ForwardingIterator源码实例Demo

下面列出了怎么用com.google.common.collect.ForwardingIterator的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: multiway-pool   文件: EliminationStack.java
@Override
public Iterator<E> iterator() {
  final class ReadOnlyIterator extends AbstractIterator<E> {
    Node<E> current = top.get();

    @Override
    protected E computeNext() {
      for (;;) {
        if (current == null) {
          return endOfData();
        }
        E e = current.get();
        current = current.next;
        if (e != null) {
          return e;
        }
      }
    }
  };
  return new ForwardingIterator<E>() {
    final ReadOnlyIterator delegate = new ReadOnlyIterator();

    @Override
    public void remove() {
      checkState(delegate.current != null);
      delegate.current.lazySet(null);
    }

    @Override
    protected Iterator<E> delegate() {
      return delegate;
    }
  };
}
 
源代码2 项目: n4js   文件: ProjectUriResourceMap.java
@Override
public Collection<Resource> values() {
	if (localContents.isEmpty()) {
		return Collections.emptyList();
	}
	// Nasty ... we have to support values().iterator().remove()
	Collection<Resource> base = super.values();
	Collection<Resource> delegate = Collections2.filter(base,
			resource -> localContents.contains(resource.getURI()));
	return new ForwardingCollection<>() {

		@Override
		protected Collection<Resource> delegate() {
			return delegate;
		}

		@Override
		public Iterator<Resource> iterator() {
			Iterator<URI> delegateIterator = localContents.iterator();
			Iterator<Resource> resourceIterator = Iterators.transform(delegateIterator, globalMap::get);
			return new ForwardingIterator<>() {

				private URI prev = null;

				@Override
				protected Iterator<Resource> delegate() {
					return resourceIterator;
				}

				public Resource next() {
					Resource result = super.next();
					prev = result.getURI();
					return result;
				}

				public void remove() {
					super.remove();
					globalMap.remove(prev);
				}
			};
		}
	};
}
 
 类方法
 同包方法