@Override public boolean hasEdgeConnecting(N nodeU, N nodeV) { return !edgesConnecting(nodeU, nodeV).isEmpty(); }
@Override public boolean hasEdgeConnecting(N nodeU, N nodeV) { return !edgesConnecting(nodeU, nodeV).isEmpty(); }
@Override public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) { Set<E> edgesConnecting = edgesConnecting(nodeU, nodeV); switch (edgesConnecting.size()) { case 0: return null; case 1: return edgesConnecting.iterator().next(); default: throw new IllegalArgumentException(String.format(MULTIPLE_EDGES_CONNECTING, nodeU, nodeV)); } }
@Override public boolean hasEdgeConnecting(N nodeU, N nodeV) { return !edgesConnecting(nodeU, nodeV).isEmpty(); }
@Override @NullableDecl public E edgeConnectingOrNull(N nodeU, N nodeV) { Set<E> edgesConnecting = edgesConnecting(nodeU, nodeV); switch (edgesConnecting.size()) { case 0: return null; case 1: return edgesConnecting.iterator().next(); default: throw new IllegalArgumentException(String.format(MULTIPLE_EDGES_CONNECTING, nodeU, nodeV)); } }
@Override public Optional<E> edgeConnecting(N nodeU, N nodeV) { Set<E> edgesConnecting = edgesConnecting(nodeU, nodeV); switch (edgesConnecting.size()) { case 0: return Optional.empty(); case 1: return Optional.of(edgesConnecting.iterator().next()); default: throw new IllegalArgumentException(String.format(MULTIPLE_EDGES_CONNECTING, nodeU, nodeV)); } }
@Override public boolean hasEdgeConnecting(EndpointPair<N> endpoints) { checkNotNull(endpoints); if (!isOrderingCompatible(endpoints)) { return false; } return !edgesConnecting(endpoints.nodeU(), endpoints.nodeV()).isEmpty(); }
@Override public int degree(N node) { if (isDirected()) { return IntMath.saturatedAdd(inEdges(node).size(), outEdges(node).size()); } else { return IntMath.saturatedAdd(incidentEdges(node).size(), edgesConnecting(node, node).size()); } }
@Override public Set<E> edgesConnecting(EndpointPair<N> endpoints) { validateEndpoints(endpoints); return edgesConnecting(endpoints.nodeU(), endpoints.nodeV()); }
@Override public int degree(N node) { if (isDirected()) { return IntMath.saturatedAdd(inEdges(node).size(), outEdges(node).size()); } else { return IntMath.saturatedAdd(incidentEdges(node).size(), edgesConnecting(node, node).size()); } }
@Override public int degree(N node) { if (isDirected()) { return IntMath.saturatedAdd(inEdges(node).size(), outEdges(node).size()); } else { return IntMath.saturatedAdd(incidentEdges(node).size(), edgesConnecting(node, node).size()); } }
@Override public boolean hasEdgeConnecting(N nodeU, N nodeV) { return !edgesConnecting(nodeU, nodeV).isEmpty(); }
@Override public boolean hasEdgeConnecting(N nodeU, N nodeV) { return !edgesConnecting(nodeU, nodeV).isEmpty(); }
@Override public Optional<E> edgeConnecting(N nodeU, N nodeV) { Set<E> edgesConnecting = edgesConnecting(nodeU, nodeV); switch (edgesConnecting.size()) { case 0: return Optional.empty(); case 1: return Optional.of(edgesConnecting.iterator().next()); default: throw new IllegalArgumentException(String.format(MULTIPLE_EDGES_CONNECTING, nodeU, nodeV)); } }
@Override public Optional<E> edgeConnecting(N nodeU, N nodeV) { Set<E> edgesConnecting = edgesConnecting(nodeU, nodeV); switch (edgesConnecting.size()) { case 0: return Optional.empty(); case 1: return Optional.of(edgesConnecting.iterator().next()); default: throw new IllegalArgumentException(String.format(MULTIPLE_EDGES_CONNECTING, nodeU, nodeV)); } }
@Override public int degree(N node) { if (isDirected()) { return IntMath.saturatedAdd(inEdges(node).size(), outEdges(node).size()); } else { return IntMath.saturatedAdd(incidentEdges(node).size(), edgesConnecting(node, node).size()); } }
@Override public int degree(N node) { if (isDirected()) { return IntMath.saturatedAdd(inEdges(node).size(), outEdges(node).size()); } else { return IntMath.saturatedAdd(incidentEdges(node).size(), edgesConnecting(node, node).size()); } }