diff --git a/out/production/Real Task 9/Dijkstra.class b/out/production/Real Task 9/Dijkstra.class index 44c74406a4ee1a172803a42bd76a3646ac913702..7902d10da9f31814d6b9ae8ab5f545ebfab1c812 100644 Binary files a/out/production/Real Task 9/Dijkstra.class and b/out/production/Real Task 9/Dijkstra.class differ diff --git a/out/production/Real Task 9/Edge.class b/out/production/Real Task 9/Edge.class index b87b027cb979f85fa9c1d5da1bb6d1c4334d2855..ca092437a77adfd477d1ab60e8b8ad2890b36f78 100644 Binary files a/out/production/Real Task 9/Edge.class and b/out/production/Real Task 9/Edge.class differ diff --git a/out/production/Real Task 9/Graph.class b/out/production/Real Task 9/Graph.class index be79eb6f12801224351c14f7a6d042957711f428..9502ef068bcbf6b9a5568b292848bf07226c0b6a 100644 Binary files a/out/production/Real Task 9/Graph.class and b/out/production/Real Task 9/Graph.class differ diff --git a/out/production/Real Task 9/ListOfPlaces.class b/out/production/Real Task 9/ListOfPlaces.class index 2e8b52e182dc7376d4069334d2425dd92984abe8..fde9efb0c2466b0a085a4bcd55ea3a3ce289b71a 100644 Binary files a/out/production/Real Task 9/ListOfPlaces.class and b/out/production/Real Task 9/ListOfPlaces.class differ diff --git a/out/production/Real Task 9/Node.class b/out/production/Real Task 9/Node.class index 8090d598ae54a197cd55bb339b5b86116ca854b8..c1f8ebb191fe8a9955c8c03781260046bf884380 100644 Binary files a/out/production/Real Task 9/Node.class and b/out/production/Real Task 9/Node.class differ diff --git a/out/production/Real Task 9/Task9.class b/out/production/Real Task 9/Task9.class index e231b157e5e4b5d2d1c250e4db44dd428bbe56cf..c55c22f84e75ea90b8ca31e2950af97ddccc1c13 100644 Binary files a/out/production/Real Task 9/Task9.class and b/out/production/Real Task 9/Task9.class differ diff --git a/out/production/Real Task 9/Utils.class b/out/production/Real Task 9/Utils.class index cde6d7e51e8398ecb1dd4c37be2fa71631884c21..9c0d2eba1043b6ecb1c7f69588aa8d5613e23a7e 100644 Binary files a/out/production/Real Task 9/Utils.class and b/out/production/Real Task 9/Utils.class differ diff --git a/src/Task9.java b/src/Task9.java index 58d3477facbcf67b6ee27031c2262b8cb1e441cd..073c4fbb21154693ca3958a81114b081e98e1b9c 100644 --- a/src/Task9.java +++ b/src/Task9.java @@ -18,7 +18,11 @@ public class Task9 { System.out.println(node.getLatitude() + "," + node.getLongitude()); }*/ g.loadInterestPoints("interessepktIceland.txt"); - g.printInterestPoints(); + Map<Integer,Integer> list = Dijkstra.getListOfPlaces(g,0,8,(short) 2).getPlaceList(); + list.forEach((number, integer) -> { + Node node = g.getNode(number); + System.out.println(node.getName() +" : "+node.getLatitude()+","+node.getLongitude()+" Driving time: " + integer ); + }); } } class Node{ @@ -162,9 +166,7 @@ class Graph{ List<String> data = Utils.readFile(inFile); for (int i = 1; i < data.size(); ++i) { String[] splitText = Utils.dividedText(data.get(i), 3); - Node node = getNode(Integer.parseInt(splitText[0])); - node.setType(Short.parseShort(splitText[1])); - node.setName(splitText[2]); + this.setTypes(Integer.parseInt(splitText[0]),Short.parseShort(splitText[1]),splitText[2]); } System.out.println("Interest points loaded."); } @@ -182,7 +184,7 @@ class Graph{ System.out.println(sb.toString()); } - private void setTypes(int nodeNumber,int typeValue, String name){ + private void setTypes(int nodeNumber,short typeValue, String name){ Node node = this.getNode(nodeNumber); if((typeValue&1) ==1) node.setType((short) 1); @@ -257,7 +259,7 @@ class Dijkstra{ Node node = graph.getNode(nextNode); if (node.getName() != null){ if(node.isTypeOf(type)){ - listOfPlaces.addPlace(node,currentSum); + listOfPlaces.addPlace(node.getNumber(),currentSum); } } } @@ -328,43 +330,47 @@ class Dijkstra{ } class ListOfPlaces{ - private final Map<Node, Integer> placeList = new HashMap<>(); + private final Map<Integer, Integer> placeList = new HashMap<>(); int maxDriveTime = 0; private final int maxSize; + int numberOfFarthestNode = -1; public ListOfPlaces(int maxSize){ this.maxSize = maxSize; } - public void addPlace(Node node, int driveTime){ + public void addPlace(int nodeNumber, int driveTime){ if(placeList.size()<this.maxSize){ - placeList.put(node,driveTime); - if(driveTime> this.maxDriveTime) this.maxDriveTime = driveTime; + placeList.put(nodeNumber,driveTime); + if(driveTime> this.maxDriveTime){ + this.maxDriveTime = driveTime; + this.numberOfFarthestNode = nodeNumber; + } } else{ - fixPlaceList(node,driveTime); + fixPlaceList(nodeNumber,driveTime); } } - private void fixPlaceList(Node node, int driveTime){ - if (placeList.containsKey(node) && placeList.get(node)<driveTime){ - placeList.put(node,driveTime); + private void fixPlaceList(int nodeNumber, int driveTime){ + if (placeList.containsKey(nodeNumber) && placeList.get(nodeNumber)<driveTime){ + placeList.replace(nodeNumber,driveTime); } - else{ - Node testNode; - int testDriveTime; - Node[] nodeList = (Node[]) placeList.keySet().toArray(); - for(int i = 0; i<maxSize;i++){ - if(placeList.get(nodeList[i])<driveTime){ - testNode = nodeList[i]; - testDriveTime = placeList.get(nodeList[i]); - placeList.remove(testNode); - placeList.put(node,driveTime); - fixPlaceList(testNode,testDriveTime); + else if(driveTime<maxDriveTime){ + placeList.remove(numberOfFarthestNode); + placeList.put(nodeNumber,driveTime); + int max = 0; + placeList.forEach((integer, integer2) -> { + if(integer2>max){ + maxDriveTime=integer2; + numberOfFarthestNode =integer; } - } + }); } } + public Map<Integer,Integer> getPlaceList(){ + return placeList; + } }