From 36e59323c89a95287a96b65f5ae050721a908d7e Mon Sep 17 00:00:00 2001
From: Nikolaus Krismer <nikolaus.krismer@uibk.ac.at>
Date: Thu, 14 Aug 2014 13:42:46 +0200
Subject: [PATCH] reworked link expanding (needs less lists now)

---
 .../inf/isochrone/algorithm/Isochrone.java    | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

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 01734eb6..6ef169d1 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;
 	}
 
 	/**
-- 
GitLab