ein map key/value"problem"

a.pst

Aktives Mitglied
salve;
folgendes code stück soll aus einer navigablemap, nach dem größten Float schlüssel, daß damit assozierte float array raus fischen. es holt auch ein array mit der korrekten länge heraus, aber ohne die in den array abgelegten werte...die enthaltenen werte sind irgendwelche float werte, aber niemals jene welche ursprünglich darin abgelegt wurden 🙁

Java:
    public float[] aussuchen(NavigableMap<Float, float[]> map) throws IOException {
        if (map.isEmpty()) {
            float werte[] = {0, 0, 0, 0, 0, 0, 0, 0};
            return werte;
        } else {
            float[] werte = map.get(map.lastKey(););
            return werte;
        }
    }

wie komme ich zu den korrekten werten? was mach ich da falsch??? ich weiß leider nicht mehr weiter...wer kann mir weiterhelfen?

gruß
 
Sorry, hab das TreeMap irgendwie überlesen.
Wie wird die Map den befüllt?
so:
Java:
  map.put(prozent, multi);
🙂

Java:
if (fma >= ts & fma2 <= ts & rozent > mina) {
                if (minnxp <= nxp & minLeistung < nel) {
                    map.put(rfaProzent, multi);
                }
ich weiß also, was in dem float array drin sein müsste...
 
Zuletzt bearbeitet:
Okay - eine bisschen mehr Info wäre schon interessant, kannst Du mal ein Demobsp mit dem Problem posten.
das grüne müsste im array sein, enthalten ist das rote:

fma20.42 ts20.38 prozent16.3 nxp0.9 nel31.1
4.792514 7.052642 8.439488 0.09249866

fma20.45 ts20.12 prozent16.1 nxp0.9 nel31.0
5.94298 5.5891485 8.544142 0.048344135

16.3(ist der key)
1.3087451
5.3749857
2.5527096
7.9608126
 
Ich gehe davon aus, dass das array an einer anderen Stelle verändert wird.

Beachte, dass wenn du ein array in die MAP machst, dann wird das nicht kopiert und eingefroren.

Wenn andere Prozesse mit der Referenz auf das Array noch was rechnen, dann verändern sich die Werte.

Gruß,

Marcinek
 
Ich gehe davon aus, dass das array an einer anderen Stelle verändert wird.

Beachte, dass wenn du ein array in die MAP machst, dann wird das nicht kopiert und eingefroren.

Wenn andere Prozesse mit der Referenz auf das Array noch was rechnen, dann verändern sich die Werte.

Gruß,

Marcinek
sieht genau so aus, als wenn du recht hast...das wird es wohl sein. kann ich dagegen was tun?

edit:
Marcinek hat mich auf die spur gebracht, vielen dank auch 🙂
mit clone(); geht das so wie ichs mir vorgestellt hab.
 
Zuletzt bearbeitet:

Zurück
Oben