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

Stephen Colebourne commented on COLLECTIONS-213:
------------------------------------------------

I believe am Iterable implementation that wraps an Iterator is a very good idea 
for [collections] and simplifying its API.

> CollectionUtils API extension: algorithm methods accept an Iterator argument
> ----------------------------------------------------------------------------
>
>                 Key: COLLECTIONS-213
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-213
>             Project: Commons Collections
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Dusan Chromy
>            Assignee: Brent Worden
>             Fix For: 4.x
>
>         Attachments: COLLECTIONS-213.patch, CollectionUtils.java, 
> TestCollectionUtils.java, collections-4.0-213.diff
>
>
> I just finished the Iterator additions to CollectionUtils, including test 
> cases and I am going to
> attach them to this issue very shortly (basically as soon as I figure out how 
> attaching in JIRA works :)
> At first I was thinking for a while whether CollectionUtils is a good place 
> to accomodate the methods with the
> new signature, until I noticed the collect method already accepts an Iterator 
> argument.
> Following methods now accept an Iterator argument (besides collect):
> cardinality
> find
> forAllDo
> countMatches
> exists
> I also noticed cardinality used to throw a NPE if the collection argument was 
> null.
> I see no reason why it should not return zero. The Iterator flavour does 
> return zero
> and I also modified the Collection version to return zero (including Javadoc
> modification) for the sake of consistence.
> I stopped to think for a while before touching the method, but the fact
> that the Javadoc does not mention "may not be null" made me think the NPE is 
> not thrown
> intentionally. And after all, cardinality(..) is nothing else than 
> specialized countMatches(..), 
> which returns 0 for null collection. However, feel free to reject the change 
> to the cardinality(Object,Collection)
> method if you think otherwise.
> I worked on a fresh checkout from subversion and I just updated few minutes 
> ago to make sure I have modified
> the latest version. Anyway, please double-check before commiting the changes.
> Cheers,
> Dusan
> > I think that these methods would make useful additions to the API.
> > 
> > I don't have the time to do much collections work these days, but if you 
> > want to code the methods with test cases and attach them to JIRA then that 
> > would be great.
> > 
> > Stephen
> > 
> > 
> > dusan.chr...@freenet.de wrote:
> > 
> > > I've been using some algorithm methods from the CollectionUtils, for 
> > > example
> > > find(Collection, Predicate)
> > > exists(Collection, Predicate)
> > > countMatches(Collection, Predicate)
> > > forAllDo(Collection, Closure)
> > >
> > > However, I would also like to be able to use these algorithms with an 
> > > Iterator:
> > >
> > > find(Iterator, Predicate)
> > > exists(Iterator, Predicate)
> > > countMatches(Iterator, Predicate)
> > > forAllDo(Iterator, Closure)
> > >
> > > The obvious workaround is to use IteratorUtils.toList(Iterator), however 
> > > this comes at the cost of constructing a list object (an ArrayList 
> > > presumably) which could be avoided, as the Iterator itself is sufficient 
> > > for the above algorithms to work.
> > >
> > > What do you think? Is there any reason not to provide the algorithms for 
> > > an Iterator? I personally think that the algorithms should have been 
> > > there for Iterators in the first place, because every collection is 
> > > Iterable (or has an Iterator, prior to JDK 5.0).
> > >
> > > If noone is interested or has time to implement these changes, I can also 
> > > contribute to the project - but at the moment I just wanted to discuss 
> > > the idea / check if this has been already considered or planned.
> > >
> > > Best Regards,
> > >
> > > Dusan Chromy
> > 
> > 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to