/** * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node * and updates {@link #successorIterator} to iterate through the successors of {@link #node}. */ protected final boolean advance() { checkState(!successorIterator.hasNext()); if (!nodeIterator.hasNext()) { return false; } node = nodeIterator.next(); successorIterator = graph.successors(node).iterator(); return true; }
@Override public Set<N> successors(N node) { return delegate().successors(node); }
/** * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node * and updates {@link #successorIterator} to iterate through the successors of {@link #node}. */ protected final boolean advance() { checkState(!successorIterator.hasNext()); if (!nodeIterator.hasNext()) { return false; } node = nodeIterator.next(); successorIterator = graph.successors(node).iterator(); return true; }
@Override public int size() { return graph.inDegree(node) + graph.outDegree(node) - (graph.successors(node).contains(node) ? 1 : 0); }
/** * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node * and updates {@link #successorIterator} to iterate through the successors of {@link #node}. */ protected final boolean advance() { checkState(!successorIterator.hasNext()); if (!nodeIterator.hasNext()) { return false; } node = nodeIterator.next(); successorIterator = graph.successors(node).iterator(); return true; }
@Override public Set<N> successors(N node) { return delegate().successors(node); }
@Override public UnmodifiableIterator<EndpointPair<N>> iterator() { return Iterators.unmodifiableIterator( Iterators.concat( Iterators.transform( graph.predecessors(node).iterator(), new Function<N, EndpointPair<N>>() { @Override public EndpointPair<N> apply(N predecessor) { return EndpointPair.ordered(predecessor, node); } }), Iterators.transform( // filter out 'node' from successors (already covered by predecessors, above) Sets.difference(graph.successors(node), ImmutableSet.of(node)).iterator(), new Function<N, EndpointPair<N>>() { @Override public EndpointPair<N> apply(N successor) { return EndpointPair.ordered(node, successor); } }))); }
@Override public Set<N> successors(N node) { return delegate().successors(node); }
@Override public boolean contains(@Nullable Object obj) { if (!(obj instanceof EndpointPair)) { return false; } EndpointPair<?> endpointPair = (EndpointPair<?>) obj; if (!endpointPair.isOrdered()) { return false; } Object source = endpointPair.source(); Object target = endpointPair.target(); return (node.equals(source) && graph.successors(node).contains(target)) || (node.equals(target) && graph.predecessors(node).contains(source)); } }
@Override public int size() { return graph.inDegree(node) + graph.outDegree(node) - (graph.successors(node).contains(node) ? 1 : 0); }
@Override public int size() { return graph.inDegree(node) + graph.outDegree(node) - (graph.successors(node).contains(node) ? 1 : 0); }
@Override public UnmodifiableIterator<EndpointPair<N>> iterator() { return Iterators.unmodifiableIterator( Iterators.concat( Iterators.transform( graph.predecessors(node).iterator(), new Function<N, EndpointPair<N>>() { @Override public EndpointPair<N> apply(N predecessor) { return EndpointPair.ordered(predecessor, node); } }), Iterators.transform( // filter out 'node' from successors (already covered by predecessors, above) Sets.difference(graph.successors(node), ImmutableSet.of(node)).iterator(), new Function<N, EndpointPair<N>>() { @Override public EndpointPair<N> apply(N successor) { return EndpointPair.ordered(node, successor); } }))); }
@Override public boolean contains(@NullableDecl Object obj) { if (!(obj instanceof EndpointPair)) { return false; } EndpointPair<?> endpointPair = (EndpointPair<?>) obj; if (!endpointPair.isOrdered()) { return false; } Object source = endpointPair.source(); Object target = endpointPair.target(); return (node.equals(source) && graph.successors(node).contains(target)) || (node.equals(target) && graph.predecessors(node).contains(source)); } }
@Override public UnmodifiableIterator<EndpointPair<N>> iterator() { return Iterators.unmodifiableIterator( Iterators.concat( Iterators.transform( graph.predecessors(node).iterator(), new Function<N, EndpointPair<N>>() { @Override public EndpointPair<N> apply(N predecessor) { return EndpointPair.ordered(predecessor, node); } }), Iterators.transform( // filter out 'node' from successors (already covered by predecessors, above) Sets.difference(graph.successors(node), ImmutableSet.of(node)).iterator(), new Function<N, EndpointPair<N>>() { @Override public EndpointPair<N> apply(N successor) { return EndpointPair.ordered(node, successor); } }))); }
@Override public boolean contains(@NullableDecl Object obj) { if (!(obj instanceof EndpointPair)) { return false; } EndpointPair<?> endpointPair = (EndpointPair<?>) obj; if (!endpointPair.isOrdered()) { return false; } Object source = endpointPair.source(); Object target = endpointPair.target(); return (node.equals(source) && graph.successors(node).contains(target)) || (node.equals(target) && graph.predecessors(node).contains(source)); } }
/** * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node * and updates {@link #successorIterator} to iterate through the successors of {@link #node}. */ protected final boolean advance() { checkState(!successorIterator.hasNext()); if (!nodeIterator.hasNext()) { return false; } node = nodeIterator.next(); successorIterator = graph.successors(node).iterator(); return true; }
/** * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node * and updates {@link #successorIterator} to iterate through the successors of {@link #node}. */ protected final boolean advance() { checkState(!successorIterator.hasNext()); if (!nodeIterator.hasNext()) { return false; } node = nodeIterator.next(); successorIterator = graph.successors(node).iterator(); return true; }
@Override public Set<N> successors(N node) { return delegate().successors(node); }
@Override public int size() { return graph.inDegree(node) + graph.outDegree(node) - (graph.successors(node).contains(node) ? 1 : 0); }
@Override public int size() { return graph.inDegree(node) + graph.outDegree(node) - (graph.successors(node).contains(node) ? 1 : 0); }