Eine kurze Frage, die vielleicht lahm ist.
Im folgenden Code:
%Vor%Ist die letzte Anweisung "dataMap.put" notwendig? Oder wird dataMap.get (1) einen Verweis auf das Array liefern, das dann direkt in den späteren Anweisungen geändert wird.
Ich weiß, dass Map.get () bei veränderbaren Objekten (zB Map) den Verweis auf das gewünschte Objekt liefert, allerdings mit einem Array von Doubles (deren Elementtyp zB Double
unveränderlich ist) Ich bin mir nicht sicher, ob ich einen Verweis auf das Array in der Karte bekomme.
Danke!
Nein, die abschließende Anweisung ist nicht erforderlich - weil die Map nur Referenzen auf Arrays enthält, wie Sie bereits erwähnt haben. Ein Array ist ein veränderbares Objekt, obwohl Double
es nicht ist - es ist wie ein Objekt mit einer setName(String)
-Methode - nur weil String
unveränderlich ist, ist der Containertyp nicht.
Beachten Sie, dass ein anderer Thread 1 die Hälfte die Änderung (dh die Einstellung des ersten Elements auf 100) sehen kann, ohne dass das zweite Element auf gesetzt ist 200. Ist das okay? Wenn nicht, könnten Sie darüber nachdenken, stattdessen ein neues Array zu erstellen:
%Vor%1 Dies setzt voraus, dass Sie natürlich eine thread-sichere Map verwenden, mit ...
Tags und Links java arrays collections