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 6dda87a6f6fbe9e75579a21c21b5bd0ff0ac3b0f..01734eb6fafcea232557459555734583695cc7cf 100644
--- a/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java
+++ b/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java
@@ -12,11 +12,12 @@ import it.unibz.inf.isochrone.network.NodeConnection;
 import it.unibz.inf.isochrone.util.EnumContainer.Direction;
 import it.unibz.inf.isochrone.util.Query;
 
-import java.util.ArrayList;
 import java.util.Calendar;
 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;
@@ -215,7 +216,7 @@ public abstract class Isochrone {
 	}
 
 	private Collection<Node> expandLinks(final Node node, final Collection<Link> links) {
-		final Collection<Node> resultNodes = new ArrayList<>();
+		final Collection<Node> resultNodes = new LinkedList<>();
 
 		final NodeConnection nConnections = new NodeConnection(node);
 		for (final Link link : links) {
@@ -297,7 +298,7 @@ public abstract class Isochrone {
 		}
 
 		final Map<Node, Double> newDistances = getAdjNodeCost(nConnection);
-		final Set<Node> resultCollection = new HashSet<>(newDistances.size());
+		final Set<Node> resultCollection = new LinkedHashSet<>(newDistances.size());
 		for (final Entry<Node, Double> e : newDistances.entrySet()) {
 			final Node adjacentNode = e.getKey();
 			final double newDistance = e.getValue();
diff --git a/src/main/java/it/unibz/inf/isochrone/network/NodeConnection.java b/src/main/java/it/unibz/inf/isochrone/network/NodeConnection.java
index 144980f8f4cc70c9f77e121ff21fa4886b9c4e0e..38c92d152759e65740f14a48461e4b8caf63fde8 100644
--- a/src/main/java/it/unibz/inf/isochrone/network/NodeConnection.java
+++ b/src/main/java/it/unibz/inf/isochrone/network/NodeConnection.java
@@ -2,8 +2,8 @@ package it.unibz.inf.isochrone.network;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
 
@@ -18,8 +18,8 @@ public class NodeConnection {
 
 	public NodeConnection(final Node sourceNode) {
 		this.sourceNode = sourceNode;
-		this.continuousTargetConnections = new HashMap<>();
-		this.discreteTargetConnections = new HashMap<>();
+		this.continuousTargetConnections = new LinkedHashMap<>();
+		this.discreteTargetConnections = new LinkedHashMap<>();
 	}
 
 	// Getters
@@ -73,7 +73,7 @@ public class NodeConnection {
 	}
 
 	public Map<Node, Collection<Link>> getTargets() {
-		final Map<Node, Collection<Link>> allTargets = new HashMap<>();
+		final Map<Node, Collection<Link>> allTargets = new LinkedHashMap<>();
 		allTargets.putAll(continuousTargetConnections);
 		allTargets.putAll(discreteTargetConnections);
 
@@ -140,7 +140,7 @@ public class NodeConnection {
 
 	private static Collection<Integer> getIdsForRoutes(final Map<Node, Collection<Link>> m) {
 		final Collection<Collection<Link>> linkSet = m.values();
-		final Set<Integer> resultSet = new HashSet<>(linkSet.size());
+		final Set<Integer> resultSet = new LinkedHashSet<>(linkSet.size());
 		for (final Collection<Link> lCollection : linkSet) {
 			for (final Link l : lCollection) {
 				resultSet.add(l.getRoute());
@@ -156,7 +156,7 @@ public class NodeConnection {
 
 	private static Collection<Integer> getRoutesToTargetNode(final Map<Node, Collection<Link>> m, final Node node) {
 		final Collection<Link> linkSet = m.get(node);
-		final Set<Integer> resultSet = new HashSet<>(linkSet.size());
+		final Set<Integer> resultSet = new LinkedHashSet<>(linkSet.size());
 		for (final Link l : linkSet) {
 			resultSet.add(l.getRoute());
 		}
@@ -165,7 +165,7 @@ public class NodeConnection {
 
 	private static Collection<Integer> getIdsForTargetNodes(final Map<Node, Collection<Link>> m) {
 		final Set<Node> nodeSet = m.keySet();
-		final Set<Integer> resultSet = new HashSet<>(nodeSet.size());
+		final Set<Integer> resultSet = new LinkedHashSet<>(nodeSet.size());
 		for (final Node n : nodeSet) {
 			resultSet.add(n.getId());
 		}