private static void identifyRoutes(int routekey, int junction) { for (Road road : roaddetails) { if (junction == junctions) return; Route validRoute = null; if (road.startjunction == junction) { validRoute = validRoutes.get(routekey); if (validRoute == null || validRoute.isComplete) { validRoute = new Route(new HashSet<Road>()); routekey = road.roadidx; validRoute.routekey = routekey; validRoutes.put(routekey, validRoute); if (junction != 1) backTraceRouteAndComplete(routekey, road); } if (validRoute.isComplete) return; if (!validRoute.roads.contains(road)) { validRoute.roads.add(road); validRoute.totalcost += road.cost; road.routes.add(validRoute); } else continue; if (road.destjunction == junctions) validRoute.isComplete = true; identifyRoutes(routekey, road.destjunction); // if (junction!=1) // backTraceRouteAndComplete(routekey,junction); } } }