commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Muthmann (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COLLECTIONS-528) Add removeAll(Collection<E> collection, Collection<E> remove, Comparator<E> comparator) and contains(Collection<E> collection, E object, Comparator<E> comparator) methods
Date Tue, 20 May 2014 07:09:37 GMT

    [ https://issues.apache.org/jira/browse/COLLECTIONS-528?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14002893#comment-14002893
] 

Alexander Muthmann commented on COLLECTIONS-528:
------------------------------------------------

Oh sorry, there seemed to be a problem with the internet connection which caused my double-post
:(

> Add removeAll(Collection<E> collection, Collection<E> remove, Comparator<E>
comparator) and contains(Collection<E> collection, E object, Comparator<E> comparator)
methods
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: COLLECTIONS-528
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-528
>             Project: Commons Collections
>          Issue Type: Improvement
>          Components: Collection
>            Reporter: Alexander Muthmann
>
> Hi,
> this request originates from one of our project where we have implemented something similar.
> The Java-Interface java.util.Collection<E> specifies the two methods contains(Object
o) and boolean removeAll(Collection<?> c). Both methods rely on the equals() method
of the given Objects.
> In some cases, it's not possible to change those methods and therefore removeAll and
contains cannot be used directly. 
> E.g. if you have an class myClass with property A and B and the equals method uses both
properties, but you are only interested in property B.
> To solve this problem, I'd like to propose the following extensions of CollectionsUtils:
> {code}
> /**
>  * Removes all elements of remove from the collection using the comparator instead of
.equals()
>  */
> public static <E> Collection<E> removeAll(final Collection<E> collection,
final Collection<E> remove, Comparator<E> comparator);
> /**
>  * Checks if the given collection contains the object using the comparator instead of
.equals()
>  */
> public static <E> boolean contains(final Collection<E> collection, final
E object, Comparator<E> comparator);
> {code}
> Both methods do basically the same as their native equivalient but use a comparator instead
of equals(). 
> This allows the injection of any required compare value:
> {code}
> final Collection<myClass> result = CollectionUtils.removeAll(base, sub, new Comparator<myClass>()
{
>       public int compare(myClass o1, myClass o2) {
>         return o1.getB() == o2.getB();
>       }
>     });
> {code}
> If you think those methods are a good idea (as proposed or changed according to any rules),
please give me a short feedback and I'll offer an implementation as diff patch for review.
> Cheers,
> Alex



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message