From 3bf7ac0e7241eed80cb1d238e036d0b3e7fa63d8 Mon Sep 17 00:00:00 2001 From: kraleva <viktoriakraleva@gmail.com> Date: Fri, 31 Mar 2023 16:44:26 +0200 Subject: [PATCH] cannot remove object from arraylist --- mapbuilder/src/main/java/map/builder/App.java | 1 + .../osm/OSMConnectedComponentParser.java | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/mapbuilder/src/main/java/map/builder/App.java b/mapbuilder/src/main/java/map/builder/App.java index 86d03c8..b472731 100644 --- a/mapbuilder/src/main/java/map/builder/App.java +++ b/mapbuilder/src/main/java/map/builder/App.java @@ -65,6 +65,7 @@ public class App { // cleanup graph = null; + OSMConnectedComponentParser.cleanUp(roadNetworkBuilder, component); RoadNetwork roadNetwork = roadNetworkBuilder.build(); System.out.println("Turn restrictions count: " + roadNetwork.getTurnRestrictionsCount()); diff --git a/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java b/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java index 003ba3c..0632f01 100644 --- a/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java +++ b/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java @@ -1,5 +1,10 @@ package map.builder.osm; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; + +import de.fuberlin.navigator.protos.map_builder.Node; import de.fuberlin.navigator.protos.map_builder.RoadNetwork; import de.fuberlin.navigator.protos.map_builder.Segment; import map.builder.utilities.ConnectedComponentGraph; @@ -24,4 +29,26 @@ public class OSMConnectedComponentParser { } } + public static void cleanUp(RoadNetwork.Builder roadNetworkBuilder, ArrayList<Long> component) { + Map<Long, Node> nodesMap = roadNetworkBuilder.getNodesMap(); + for (Iterator<Long> iterator = nodesMap.keySet().iterator(); iterator.hasNext();) { + Long key = iterator.next(); + System.out.println(component.contains(key)); + if (!component.contains(key)) { + iterator.remove(); + ; + } + } + Map<Long, Segment> segmentsMap = roadNetworkBuilder.getSegmentsMap(); + for (Iterator<Long> iterator = segmentsMap.keySet().iterator(); iterator.hasNext();) { + Long key = iterator.next(); + Long startNodeID = segmentsMap.get(key).getStartNode(); + Long endNodeID = segmentsMap.get(key).getEndNode(); + if ((!component.contains(startNodeID)) && (!component.contains(endNodeID))) { + iterator.remove(); + ; + } + } + } + } \ No newline at end of file -- GitLab