¿Cuál es la diferencia entre Collections.unmodifiableSet () e ImmutableSet of Guava?
JavaDoc deImmutableSet
dice
Diferente aCollections.unmodifiableSet
, que es una vista de una colección separada que aún puede cambiar, una instancia de esta clase contiene sus propios datos privados y nunca cambiará. Esta clase es conveniente para conjuntos finales estáticos públicos ("conjuntos constantes") y también le permite hacer fácilmente una "copia defensiva" de un conjunto proporcionado a su clase por una persona que llama.
Pero elImmutableSet
todavía almacena referencias de elementos, no pude encontrar la diferencia conCollections.unmodifiableSet()
. Muestra
StringBuffer s=new StringBuffer("a");
ImmutableSet<StringBuffer> set= ImmutableSet.of(s);
s.append("b");//s is "ab", s is still changed here!
Podría alguien explicarl