diff --git a/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java b/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java index 01734eb6fafcea232557459555734583695cc7cf..6ef169d1760a17f75101be2160406ee151d1572d 100644 --- a/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java +++ b/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java @@ -17,7 +17,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; -import java.util.LinkedList; import java.util.Map; import java.util.Map.Entry; import java.util.PriorityQueue; @@ -165,9 +164,12 @@ public abstract class Isochrone { output.addNode(node); node.close(); - updateNodeQueue(expandLinks(node, adjacents)); + final NodeConnection nConnection = prepareLinkExpand(node, adjacents); + updateNodeQueue(expandContinuousLinks(nConnection)); addLinks(output, adjacents); + updateNodeQueue(expandDiscreteLinks(nConnection)); + if (qIsExpiring && node.isExpired()) { removeNode(nodeId); } @@ -215,10 +217,8 @@ public abstract class Isochrone { } } - private Collection<Node> expandLinks(final Node node, final Collection<Link> links) { - final Collection<Node> resultNodes = new LinkedList<>(); - - final NodeConnection nConnections = new NodeConnection(node); + private NodeConnection prepareLinkExpand(final Node node, final Collection<Link> links) { + final NodeConnection nConnection = new NodeConnection(node); for (final Link link : links) { final Node adjacentNode = getNode(link.getOppositeOf(node)); adjacentNode.visitNrAdjacentLinks((short) 1); @@ -242,14 +242,11 @@ public abstract class Isochrone { removeNode(adjacentNode.getId()); } } else { - nConnections.addTargetLink(adjacentNode, link); + nConnection.addTargetLink(adjacentNode, link); } } - resultNodes.addAll(expandContinuousLinks(nConnections)); - resultNodes.addAll(expandDiscreteLinks(nConnections)); - - return resultNodes; + return nConnection; } /**