Working with immutable collections
Gernot Neppert
mcnepp02 at googlemail.com
Mon Nov 19 07:42:55 PST 2012
Hmm, what you proposed was:
List<X> filtered = xList.filter(obj ->
obj.something()).intoImmutable(new ArrayList<X>()));
whereas my proposal would lead to:
List<X> filtered = xList.filter(obj -> obj.something()).into(new
ArrayList<X>()).unmodifiable();
Not that much more verbose, don't you think?
Am 19.11.2012 16:15, schrieb Johan Haleby:
> This would work fine as well, the main point is that I want to avoid
> wrapping my statement in Collections.unmodifiableList(..) etc.
>
> /Johan
>
> On Mon, Nov 19, 2012 at 4:07 PM, Gernot Neppert
> <mcnepp02 at googlemail.com <mailto:mcnepp02 at googlemail.com>> wrote:
>
> I'd rather have an "unmodifiable" member function in
> java.util.Collection, together with a "synchronized" function,
> something like this:
>
> public interface Collection<E> {
>
> /**
> Returns an unmodifiable view of this Collection.
> @return an unmodifiable view of this Collection (may be {@code
> this} instance if is already unmodifiable).
> public Collection<E> unmodifiable() default {
> return Collections.unmodifiableCollection(this);
> }
>
> /**
> Returns a synchronized view of this Collection.
> @param lock the Lock to use.
> @return a view of this Collection that executes all operations
> while holding a Lock. (may be {@code this} instance if is already
> synchronized on the supplied Lock).
> @throws IllegalArgumentException if this Collection is already
> synchronized on a different Lock.
> public Collection<E> synchronize(Lock lock) default {
> return Collections.synchronize(this, lock);
> }
>
> }
>
>
> These should of course be co-variantly overriden in
> java.util.List, java.util.Set etc.!
>
>
>
>
>
>
> Am 19.11.2012 15:39, schrieb Johan Haleby:
>
> Hi,
>
> I'm sorry if this has been discussed before but here goes:
>
> Let's say I have an immutable list called "xList" that I want
> to filter and
> return the result as a new *immutable* list. I could do
> something like this:
>
>
> Collections.unmodifiableList(xList.filter(obj ->
> obj.something()).into(new
> ArrayList<X>())));
>
> How ever I think this is quite verbose and doesn't follow the
> fluent style
> of the API. What I would like to have is something a long
> these lines:
>
> xList.filter(obj -> obj.something()).intoImmutable(new
> ArrayList<X>()));
>
> "intoImmutable" could then do
> "Collections.unmodifiableList(..)" for me so
> I don't need to wrap all statements where I want to return an
> immutable
> collection.
>
> What are your thoughts on this?
>
> Regards,
> /Johan
>
>
>
More information about the lambda-dev
mailing list