下面列出了怎么用com.google.common.collect.ForwardingCollection的API类实例代码及写法,或者点击链接到github查看源代码。
@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);
}
};
}
};
}