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

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

源代码1 项目: 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);
				}
			};
		}
	};
}
 
 同包方法