On Wednesday, March 30, 2011 5:18:12 AM UTC+2, Alexey wrote:
>
> There's very little memory or performance overhead.  There's no deep copy.  
> The returned collection is a proxy to the underlying one, insuring 
> immutability.
>

This is not true; ImmutableList.copyOf() actually makes a copy. Meaning, 
it's truly immutable (well, the refs are; you can still change elements 
contained in such a list): If you change the source list, then the immutable 
copy you just made will not change. Hence the wording "copyOf". You're 
thinking of Collections.unmodifiableList(), which indeed does NOT make any 
copies and just creates a view-only proxy list. But such a list is not 
immutable if someone changes the source material. Hence the naming 
"unmodifiable".

For what its worth: If its method-internal then no, this is a waste of 
lines. I wouldn't worry about CPU load unless your profiler tells you you 
should. Also, if you need to go back and modify the original collection in a 
loop of some sort, making a copy is perfectly acceptable if trying to work 
with a listIterator is going to create uglier code.

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to