Aus der Java 1.6 Collection Framework-Dokumentation :
Kollektionen , die (wie etwa keine Änderungsoperationen unterstützen
add
,remove
undclear
) , werden als nicht änderbar . [...] Sammlungen, die zusätzlich garantieren, dass keine Änderung des Sammlungsobjekts jemals sichtbar wird, werden als unveränderlich bezeichnet .
Das zweite Kriterium verwirrt mich ein bisschen. Welche Änderungen werden in der zweiten Zeile erwähnt, da die erste Sammlung nicht geändert werden kann und vorausgesetzt, dass die ursprüngliche Sammlungsreferenz entfernt wurde? Bezieht es sich auf die Änderungen in den Elementen in der Sammlung, dh auf den Status der Elemente?
Zweite Frage:
Damit eine Sammlung unveränderlich ist, wie werden die angegebenen zusätzlichen Garantien bereitgestellt? Wenn der Status eines Elements in der Sammlung von einem Thread aktualisiert wird, reicht es für die Unveränderlichkeit aus, dass diese Aktualisierungen im Status auf dem Thread, der die unveränderliche Sammlung enthält, nicht sichtbar sind?
Wie geht man vor, um eine unveränderliche Sammlung unveränderlich zu machen?
newCol = oldCol.add("element")
wird eine neue Sammlung erstellt, die eine Kopie der alten mit einem weiteren Element ist, und alle Verweise auf dieoldCol
werden weiterhin auf dieselbe unveränderte alte Sammlung verweisen.