Methoden Anwendung der allMatch()-Methode

PaulGustav

Mitglied
Hallo Leute.

Ich bemühe mich nun schon seit zwei Tagen einen Algorithums zu schreiben, der mir maximal 10 Straßenabschnitte anhand ihrer Luftliniendistanzen in einer Liste (top10List)speichert. Das Ding ist, dass alle Straßenabschnitte einander eine Distanz > 10 km aufweisen sollen. Als Basis liegt mir eine Liste (allDsegs) mit ca 250.000 Straßenabschnitten vor, welche vorher schon bearbeitet wurde.

Über die allMatch-Methode von Apache prüfe ich in der top10List, die sich nach und nach mit weiteren Straßenabschnitten füllt, ob ein neu hinzugefügter Abschnitt eine Distanz > 10 km gegenüber allen Abschnitten innerhalb der top10List aufweist.
Mein Problem besteht nun darin, dass die allMatch() nicht alle, sondern doch nur einen Wert auf das "matching" prüft.
Folgendes Skript liegt mir zu Grunde:

Java:
private static List<Top10Dsegs> getTop10DSEGs() throws IOException  {
       List<File>rFiles = getRFiles();
       List<String> allDsegs = loadDsegRanking(rFiles);
       List<Top10Dsegs> top10List = new ArrayList<>();
       double startLat_allDsegs, startLon_allDsegs;
       double startLat_top10List, startLon_top10List;
       String[] listArray;
       //declaring the starting dseg and its coordinates
       String startEntry = allDsegs.get(0);
       Top10Dsegs firstEntry = new Top10Dsegs(startEntry);
       top10List.add(firstEntry);
       System.out.println("Iteration starts here!\n---------------------");
       //begin to iterate over all entries (just ranked)
           for(String line : allDsegs){
               boolean check=false;
               Top10Dsegs nextEntry=null;
               //structure from allDsegs:
               //DSEG,startLat,startLon
               //1231231231231231231, 54.123, 8.456
               listArray = line.split(",");
               startLat_allDsegs = Double.valueOf(listArray[1]);
               startLon_allDsegs = Double.valueOf(listArray[2]);
              
               //start to check if line-entry of allDsegs has a distance > 10 km compared to given Dsegs
               for(Top10Dsegs entry : top10List){
                   startLat_top10List = entry.getStartLat();
                   startLon_top10List = entry.getStartLon();
                   //the DistanceCalculator calculates the distance between the dseg from allDsegs and the other dseg from top10List
                   DistanceCalculator distanceCalculator = new DistanceCalculator();
                   Double dist = distanceCalculator.distance(startLat_top10List, startLon_top10List, startLat_allDsegs, startLon_allDsegs, "K");
                   System.out.println("Checked Dseg: " + listArray[0]);
                   System.out.println("Distance between checked Dseg and " + entry.getSegmentID() + " = " + dist);
                   //check if there is a dseg from allDsegs distance > 10 km compared to ALL OTHER dsegs
                   check = top10List.stream().allMatch(x->dist>10);
                   System.out.println("Are there distances > 10 ? \t" + check);
                   //if check is true, the dseg from allDsegs will be added to the top10List
                   if(check==true){
                       nextEntry = new Top10Dsegs(listArray[0]+","+listArray[1]+","+listArray[2]);
                   }
                  
               }
               if(check==true && top10List.size()<10){
                   top10List.add(nextEntry);
               }
               System.out.println("Progress: \n"+top10List.size()+" entries inside top 10 list. \n<---------------->\nNext Iteration:");
       }
       return top10List;
   }

In einem weiteren Post präsentiere ich noch die Basisdaten und die Logdatei. Somit ist mein Anliegen besser nachvollziehbar.
 

PaulGustav

Mitglied
Anbei nun meine Basisliste(Auszug):
dsegID:
  • 1167317754008090120
  • 1164786265923888630
  • 1164786265923762060
  • 1164786197203465222
  • 1164786265923762064
  • 1174916616303440472
  • 1165068084498711836
  • 1175764958243602432
  • 1175761590995138142
  • 1164223590846450898
  • 1164786197203465224
Und nun das Logprotokoll, in dem deutlich wird, dass die letzte ID aufgenommen wird, obwohl deren Distanz zwischen einem der zuvor gespeicherten Abschnitte < 10 km war.

Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1167317754008090120 = 245.46126909267778
Are there distances > 10 ? true

Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1164786265923888630 = 7.2776959117952815
Are there distances > 10 ? false
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1174916616303440472 = 555.7807101607198
Are there distances > 10 ? true

Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1165068084498711836 = 53.899685010471536
Are there distances > 10 ? true
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1175764958243602432 = 463.754953931151
Are there distances > 10 ? true
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1175761590995138142 = 535.9190904280571
Are there distances > 10 ? true
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1164223590846450898 = 55.33504597812321
Are there distances > 10 ? true
Progress:
8 entries inside top 10 list.
Der Abschnitt 1164786197203465224 wurde der Liste fälschlicherweise hinzugefügt. Eigentlich müssten doch alle Ausgaben von check ab dem ersten false immer false sein, oder?
 

Thallius

Top Contributor
Mal davon abgesehen das dein Code viel zu kompliziert geschrieben ist, so setzt du Check ja auf true wenn nur ein einziger Eintrag in den top 10 mehr als 10km entfernt ist. Du Must anders herum abfragen. Setzte Check vor der Schleife auf true und wenn du in der Schleife einen Eintrag findest der kleiner als 10km ist setzt du es auf false.
Nach der Schleife testest du dann ob Check true ist und wenn ja fügst du den neuen Eintrag hinzu

Gruß

Claus
 

PaulGustav

Mitglied
Das fett gedruckte?
Ja das fett gedruckte meinte ich. Ich kann zwar Claus seinen Weg noch nicht ganz nachvollziehen, aber das Skript läuft nun so wie gewollt.
Hierzu das gewollte Logprotokoll(Iteration nach 7 Einträgen in top10List):
Next Iteration:
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1167317754008090120 = 245.46126909267778
Are all distances > 10 ? true
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1164786265923888630 = 7.2776959117952815
Are all distances > 10 ? false
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1174916616303440472 = 555.7807101607198
Are all distances > 10 ? false
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1165068084498711836 = 53.899685010471536
Are all distances > 10 ? false
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1175764958243602432 = 463.754953931151
Are all distances > 10 ? false
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1175761590995138142 = 535.9190904280571
Are all distances > 10 ? false
Checked Dseg: 1164786197203465224
Distance between checked Dseg and 1164223590846450898 = 55.33504597812321
Are all distances > 10 ? false
Progress:
7 entries inside top 10 list.​
Demnach wurde der Abschnitt 1164786197203465224 nicht hinzugefügt, weil die Distanz zu 1164786265923888630 unter 10 km lag.

Besten Dank.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
P JavaFX Anwendung beendet sich selbst nur als Jar Allgemeine Java-Themen 40
OSchriever Externe Anwendung beenden Allgemeine Java-Themen 41
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
J exe Anwendung CPU-/Speicherverbauch Allgemeine Java-Themen 5
alderwaran Hoher Sys-Load bei Multithreaded Anwendung Allgemeine Java-Themen 8
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
D Anwendung öffnet hinter Taskleiste Allgemeine Java-Themen 7
I Anwendung auf Netzlaufwerk von mehreren Usern gleichzeitig nutzbar. Allgemeine Java-Themen 3
A Garbage Collector in NetBeans vs. exe Anwendung Allgemeine Java-Themen 33
D Java Anwendung mit dll File Allgemeine Java-Themen 5
B JAVA Prozesse in einer eigenen Anwendung laufen lassen Allgemeine Java-Themen 9
D RMI Einfache Chat-Anwendung mit RMI Allgemeine Java-Themen 0
J Jasper ireport - wieso beendet die Anwendung wenn ich die Preview schließe Allgemeine Java-Themen 1
Tort-E Datenmodell / Struktur der Anwendung Allgemeine Java-Themen 4
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
B Web-Anwendung funktioniert mit Java 1.8, aber nicht mit Java 1.7 (auf Client) Allgemeine Java-Themen 5
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
P Anwendung läuft nur mit JDK Allgemeine Java-Themen 2
D Java-Anwendung mit DB, GUI, etc. Allgemeine Java-Themen 3
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
F Unlimited Strength Policy. Frage Verbreitung der Anwendung Allgemeine Java-Themen 1
T Bot für Mql-Anwendung Allgemeine Java-Themen 10
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
D neuen Prozess starten und anwendung beenden. Allgemeine Java-Themen 3
L Input/Output IO Anwendung Allgemeine Java-Themen 6
M Suche Framework/API für Monitoring-Anwendung Allgemeine Java-Themen 3
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
C Anwendung läuft nicht auf Mac OS X Allgemeine Java-Themen 2
M Java Anwendung ausführen Allgemeine Java-Themen 5
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
M Process wird gestoppt und nach beenden der Anwendung fortgeführt Allgemeine Java-Themen 4
J Interpreter-Fehler Anwendung startet nicht Allgemeine Java-Themen 5
W Framework für RichClient Anwendung? Allgemeine Java-Themen 4
D Mini Webserver für GUI Anwendung Allgemeine Java-Themen 5
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
U (Land-)Karten in Java Anwendung einbinden (GoogleMaps/OpenStreetMap) Allgemeine Java-Themen 7
S "Katalog"-Anwendung in Java eine gute Idee? Allgemeine Java-Themen 12
S Wie eine verteilte Anwendung in die Cloud? Allgemeine Java-Themen 4
E Anwendung nutzt plötzlich nicht mehr 100% CPU Allgemeine Java-Themen 2
R Geht das? JRE 1.4 global, 1.6.20 nur für eine Anwendung? Allgemeine Java-Themen 9
K Anwendung bringt JAVA Speicherfehler Allgemeine Java-Themen 11
C Java Anwendung nur einmalig starten Allgemeine Java-Themen 10
eskimo328 Offline/Online Web-Anwendung, Datensynchronisation etc. Allgemeine Java-Themen 9
E Anwendung starten Allgemeine Java-Themen 3
W Java Anwendung in HTML Allgemeine Java-Themen 2
DEvent Aktuelle Uhrzeit per Anwendung Allgemeine Java-Themen 4
C Idee für Anwendung/ Bücher Allgemeine Java-Themen 8
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
P Java Anwendung mehr Speicher zur Verfügung stellen?? Allgemeine Java-Themen 3
C Kontextmenü erweitern und mit Java Anwendung verknüfen. Allgemeine Java-Themen 3
7 Problem mit webbasierter Anwendung Allgemeine Java-Themen 6
D Java Anwendung in der Shell Allgemeine Java-Themen 5
D Versuch Server - Client anwendung Allgemeine Java-Themen 9
T Welcher Server? JSP und Client-Anwendung Allgemeine Java-Themen 4
M Anwendung des MVC Konzepts Allgemeine Java-Themen 7
R Ausführbare Java Anwendung Allgemeine Java-Themen 27
A Java-Anwendung "richtig" schließen ohne JVM zu beenden Allgemeine Java-Themen 2
B In Anwendung jar file bauen Allgemeine Java-Themen 2
A Webspace für Grails-Anwendung Allgemeine Java-Themen 3
M WebStart Anwendung nicht dauerhaft Cachen Allgemeine Java-Themen 3
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
D Anwendung startet im Remote Desktop nicht Allgemeine Java-Themen 14
S Testen einer Anwendung durch klicken von Koordinaten Allgemeine Java-Themen 7
M SMS aus Desktop-Anwendung verschicken Allgemeine Java-Themen 8
G Unterschied Enterprise Anwendung und Web Anwendung Allgemeine Java-Themen 30
? Swing Anwendung aus Konsole starten Allgemeine Java-Themen 7
G Weboberfläche für Java Anwendung? Allgemeine Java-Themen 10
Y ProcessBuilder, Prozess wird gestartet, aber Anwendung nicht Allgemeine Java-Themen 5
S jar aus anwendung heraus ausführen Allgemeine Java-Themen 2
J Konsolen Anwendung mit while(true) Allgemeine Java-Themen 6
-MacNuke- Frage zu einer 3-Tier Anwendung Allgemeine Java-Themen 9
M Anwendung nur einmal starten / Zeichen in String zählen Allgemeine Java-Themen 7
F Hilfe beim Starten einer Java Anwendung unter Windows gesuch Allgemeine Java-Themen 8
L Java 1.5 - Anwendung unter 1.6 JRE sehr langsam geworden Allgemeine Java-Themen 8
B getResourceAsStream - standalone Anwendung vs. Web-Anwendung Allgemeine Java-Themen 2
J I18n einer existierenden Anwendung Allgemeine Java-Themen 2
C Java-Anwendung beenden Allgemeine Java-Themen 3
G Auslesen mit welcher Java-Version Anwendung kompiliert wurde Allgemeine Java-Themen 2
C Anwendung nur einmal Starten Allgemeine Java-Themen 11
Z Uralt-Applet in JFrame Anwendung konvertieren Allgemeine Java-Themen 12
J OpenOffice.org Events in eigene Anwendung umleiten Allgemeine Java-Themen 4
T Socket Server Anwendung - Empfang eines Byte-Arrays Allgemeine Java-Themen 7
G Datenbank-Anwendung schnell erstellen. Allgemeine Java-Themen 7
M Versionswechsel bei einer Web-Anwendung Allgemeine Java-Themen 5
A Client/Server-Anwendung Allgemeine Java-Themen 3
G java als anwendung? Allgemeine Java-Themen 11
N externe Anwendung aktivieren (nicht starten!) Allgemeine Java-Themen 3
L Speicherverbrauch einer Anwendung unter Windows Allgemeine Java-Themen 2
C Fehler bei der Anwendung von Transformen. Allgemeine Java-Themen 2
M 1. Probleme mit MouseListener, 2. Anwendung in Infobar Allgemeine Java-Themen 8
P Anwendung minimiert starten Allgemeine Java-Themen 11
G Java Anwendung für Multi-User Allgemeine Java-Themen 2
N Linux-Commands über Java Anwendung ausführen Allgemeine Java-Themen 12
E Anwendung ließt .ini-Datei nicht Allgemeine Java-Themen 3
M Java-Anwendung von CD-ROM Allgemeine Java-Themen 19
E externe Anwendung aufrufen und sich selbst beenden Allgemeine Java-Themen 8
M Datei auf Anwendung ziehen und starten Allgemeine Java-Themen 11
T unsatisfiedlinkerror -> Diese Anwendung konnte nicht gest Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben