M
Masterand
Gast
Hallo Miteinander,
ich schreibe an einem etwas umfangreicheren Projekt (Abschlussarbeit, bin aber kein Informatiker) und habe auch schon das eine oder andere programmiert. Da es aber "nur" um HashMap put() geht muss ich mich wohl bei den Anfängerthemen einreihen...
Folgender Code:
Ausgabe aus 2 Durchläufen (Code aussenrum und auch diese Schleife liefen schon sehr häufig, ladeflaechen ist frisch initialisiert)
Warum fügt put() im zweiten Durchlauf nichts hinzu? Überschreiben gäbe es ja Ansatzpunkte für die Bugsuche, aber gar keine Veränderung?
Der Fehler tritt nur sehr selten auf (wenn, dann aber immer an fast der gleichen Stelle), deshalb ist auch kein Minimalbeispiel möglich. Sehr selten heißt: bei geschätzt über 1 Mio put() 6-8 Mal.
Gibt es irgendwelche logischen Erklärungen warum put zu keiner Veränderung führt? Weder google noch API haben mich weitergebracht. Vielleicht sehe ich auch den Wald vor lauter Bäumen nicht...
Gruß Mathias
PS: Obiges Beispiel ist natürlich zu wenig, um das Problem zu lösen. Mir reicht schon jeder Tip, wo ich bei der Bugsuche weitermachen kann. Auf diese beiden Zeilen habe ich es meiner Meinung nach eingegrenzt. - Ich bin für alles dankbar, auch wenn mir nur gezeigt wird, warum in der Eingrenzung nicht unbedingt ein Fehler liegen muss. Es können beliebige Annahmen getroffen werden, um das Phänomen zu erklären
ich schreibe an einem etwas umfangreicheren Projekt (Abschlussarbeit, bin aber kein Informatiker) und habe auch schon das eine oder andere programmiert. Da es aber "nur" um HashMap put() geht muss ich mich wohl bei den Anfängerthemen einreihen...
Folgender Code:
Java:
ladeflaechen ist HashMap<Ladeflaeche,ULD>
lf ist Ladeflaeche
coordULD.uld ist ULD (bzw erbt von ULD)
Schleife,IF usw{
ladeflaechen.put(lf,coordULD.uld);
System.out.println("Ja, "+lf+" vorhanden: "+ladeflaechen.keySet());
}
Ausgabe aus 2 Durchläufen (Code aussenrum und auch diese Schleife liefen schon sehr häufig, ladeflaechen ist frisch initialisiert)
Sonstige Erklärungen: Die Zahlenfolge der Ausgabe ist jeweils ein Element lf.toString() (für Interessierte: x,y,z:LängexBreite)Ja, 120,0,0:99880x1000 vorhanden: [120,0,0:99880x1000]
Ja, 0,100,0:120x900 vorhanden: [120,0,0:99880x1000]
Warum fügt put() im zweiten Durchlauf nichts hinzu? Überschreiben gäbe es ja Ansatzpunkte für die Bugsuche, aber gar keine Veränderung?
Der Fehler tritt nur sehr selten auf (wenn, dann aber immer an fast der gleichen Stelle), deshalb ist auch kein Minimalbeispiel möglich. Sehr selten heißt: bei geschätzt über 1 Mio put() 6-8 Mal.
Gibt es irgendwelche logischen Erklärungen warum put zu keiner Veränderung führt? Weder google noch API haben mich weitergebracht. Vielleicht sehe ich auch den Wald vor lauter Bäumen nicht...
Gruß Mathias
PS: Obiges Beispiel ist natürlich zu wenig, um das Problem zu lösen. Mir reicht schon jeder Tip, wo ich bei der Bugsuche weitermachen kann. Auf diese beiden Zeilen habe ich es meiner Meinung nach eingegrenzt. - Ich bin für alles dankbar, auch wenn mir nur gezeigt wird, warum in der Eingrenzung nicht unbedingt ein Fehler liegen muss. Es können beliebige Annahmen getroffen werden, um das Phänomen zu erklären