commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Varszegi <jvarsz...@yahoo.com>
Subject Re: [collections] LoopingIterator
Date Thu, 21 Nov 2002 22:38:39 GMT
I agree with you about the protection.  It can be a snapshot view of a particular collection
that
can be used forever.  The looping ability is the value, not the fail-fast behaviour, in my
book. 
My point was that I was saying it would've been nice to have the thing fail fast, but it's
not as
important as the looping quality, especially if it's hard to provide!  I was supporting you.

Can you send me the code?  I think I may've joined the list right after you posted it.  You
may
want to provide a refresh() method that reinitializes a LoopingIterator with the contents
of an
array/collection (especially with a saved reference to its parent collection)-- I could see
myself
using it.  I definitely don't think it should be an inner class of anything; I wanna be able
to
drop it into a project without using anything else from Collections (for instance, if I'm
space-constrained on a project).  I can think of plenty of uses for this thing in a wireless
app,
for instance.


Regards,

Jeff

--- Jonathan Carlson <joncrlsn2@yahoo.com> wrote:
> This was my take on it:
> 
> Since it uses the iterator provided by the collection, I
> felt it would be wasteful to try to provide any greater
> protection than that already provided by the collection's
> own iterator (other than the stated benefit of allowing one
> to continually loop over the collection).
> 
> That seems so reasonable to me that I'm almost afraid I
> might be missing your point.  If I am, please let me know.
> 
> Also, I can put the proper license text on it, but I didn't
> do it originally because I thought it would most likely be
> an inner class of IteratorUtils or CollectionUtils.
> 
> Let me know what you want me to do.
> 
> Thanks!
> 
> Jonathan
> 
> 
> 
> --- Jeff Varszegi <jvarszegi@yahoo.com> wrote:
> > I don't see how to implement this without being horribly
> > wasteful (checking every value in the
> > collection backing the Iterator every time something is
> > returned, getting a new Iterator every
> > time through the loop, etc.).  The thing is, you can't
> > even depend on the implementation of
> > hashCode() when you're dealing with generic collections,
> > the use of which would be wasteful
> > anyway.  Jonathan, did you find a solution to this
> > problem?
> > 
> > I was going to implement a RandomIterator, but didn't
> > figure a way around the concurrent-mod
> > problem for an externally created Iterator.  I think for
> > situations like this it's acceptable to
> > just notify users of the class that there are no
> > guarantees in the face of concurrent
> > modification.  It's a shame that Sun didn't include a
> > mod-check hook in the Collection interface,
> > or even the chance to use Observer, at least as
> > optionally supported.  I mean, I can understand
> > the absence of observers, because checking for them would
> > slow things down a little bit, but every
> > single collection I've seen that came outta Sun keeps an
> > incremental count of changes to itself.
> > 
> > Jeff
> > 
> > --- Stephen Colebourne <scolebourne@btopenworld.com>
> > wrote:
> > > Jonathan,
> > > I was going to include your files in the CVS. However,
> > I discovered that
> > > they do not cope with the situation where the
> > collection being wrapped is
> > > altered. ie. hasNext() always returns the initially
> > cached value, even if
> > > the list is clear()ed or it.remove() is called. Can you
> > sort this?
> > > 
> > > Also, if resubmitting could you place the code in the
> > correct package and
> > > with an Apache licence (from another collections file)
> > to confirm that this
> > > is an official donation of code :-)
> > > 
> > > Thanks
> > > Stephen
> > > 
> > > ----- Original Message -----
> > > From: "Jonathan Carlson" <joncrlsn2@yahoo.com>
> > > > It is attached with updated unit tests.  It was so
> > easy
> > > > that I'm surprised I didn't implement the remove() in
> > the
> > > > first place.
> > > >
> > > > Thanks!
> > > >
> > > > Jonathan Carlson
> > > > Minneapolis, Minnesota
> > > >
> > > >
> > > > --- Stephen Colebourne <scolebourne@btopenworld.com>
> > wrote:
> > > > > From: "Jonathan Carlson" <joncrlsn2@yahoo.com>
> > > > > > I can add a remove method and test cases unless
> > it's
> > > > > easier
> > > > > > for you to just add it.  I think it would just
> > use the
> > > > > > remove method on the Collection.  If the iterator
> > > > > returned
> > > > > > by the Collection implementer doesn't support it
> > then
> > > > > this
> > > > > > won't either.
> > > > >
> > > > > If you could submit the revised code and test case,
> > I
> > > > > think that I'm willing
> > > > > to commit it to collections.
> > > > >
> > > > > Stephen
> > > > >
> > > > >
> > > > > > As for a use-case, I am using it for a displaying
> > a
> > > > > number
> > > > > > of our banner ads on our e-commerce site.  The
> > > > > round-robin
> > > > > > task dispatcher mentioned earlier is another one.
> > > > > >
> > > > > > Jonathan Carlson
> > > > > >
> > > > > >
> > > > > >
> > > > > > --- Stephen Colebourne <scolebourne@joda.org>
> > wrote:
> > > > > > > [Jonathan, I have sent back to commons-dev
> > mailing
> > > > > list
> > > > > > > which is the
> > > > > > > appropriate place for design/code discussions.]
> > > > > > >
> > > > > > > I took a quick look, and I believe that the
> > code in
> > > > > the
> > > > > > > zip will work.
> > > > > > > However, my main concern is why this would be
> > needed.
> > > > > Is
> > > > > > > there a use case
> > > > > > > for an iterator that never ends?
> > > > > > >
> > > > > > > I would also like to see the remove method
> > > > > implemented.
> > > > > > > It should be
> > > > > > > possible.
> > > > > > >
> > > > > > > Stephen
> > > > > > >
> > > > > > > ----- Original Message -----
> > > > > > > From: "Jonathan Carlson" <joncrlsn2@yahoo.com>
> > > > > > > To: <scolebourne@joda.org>
> > > > > > > Sent: Friday, October 18, 2002 3:53 PM
> > > > > > > Subject: LoopingIterator
> > > > > > >
> > > > > > >
> > > > > > > > Hi Stephen,
> > > > > > > >
> > > > > > > > Thanks for your work on the IteratorUtils.  I
> > > > > thought
> > > > > > > this
> > > > > > > > might be a good addition if it hasn't been
> > added
> > > > > > > already.
> > > > > > > > It's an iterator that loops continually.
> > > > > > > Unfortunately, it
> > > > > > > > can't just decorate another iterator but has
> > to
> > > > > wrap a
> > > > > > > > collection due to the fact that iterators
> > cannot be
> > > > > > > reset
> > > > > > > > to the beginning of the collection.
> > > > > > > >
> > > > > > > > Included is a jUnit test case that shows it
> > works
> > > > > "as
> > > > > > > > advertised".  Hope this helps.
> > > > > > > >
> > > > > > > > Jonathan Carlson
> > > > > > > > Minneapolis, Minnesota
> > > > > > > >
> > > > > > > >
> > > > > > > > =====
> > > > > > > > Jonathan Carlson
> > > > > > > > joncrlsn@users.sf.net
> > > > > > > > Minneapolis, Minnesota
> > > > > > > >
> > > > > > > >
> > __________________________________________________
> > > > > > > > Do you Yahoo!?
> > > > > > > > Faith Hill - Exclusive Performances, Videos &
> > More
> > > > > > > > http://faith.yahoo.com
> > > > > > >
> > > > > >
> > > > > > > ATTACHMENT part 2 application/x-zip-compressed
> > > > > > name=LoopingIterator.zip
> > > > > >
> > > > > >
> > > > > >
> > > > > > =====
> > > > > > Jonathan Carlson
> > > > > > joncrlsn@users.sf.net
> > > > > > Minneapolis, Minnesota
> > > > > >
> > > > > >
> > __________________________________________________
> > > > > > Do you Yahoo!?
> > > > > > HotJobs - Search new jobs daily now
> > > > > > http://hotjobs.yahoo.com/
> > > > > >
> > > > > > --
> > > > > > To unsubscribe, e-mail:
> > > > > <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> > > > > > For additional commands, e-mail:
> > > > > <mailto:commons-dev-help@jakarta.apache.org>
> > > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > =====
> > > > Jonathan Carlson
> > > > joncrlsn@users.sf.net
> > > > Minneapolis, Minnesota
> > > >
> > > > __________________________________________________
> > 
> === message truncated ===
> 
> 
> =====
> Jonathan Carlson
> joncrlsn@users.sf.net
> Minneapolis, Minnesota
> 
> __________________________________________________
> Do you Yahoo!?
> Yahoo! Mail Plus  Powerful. Affordable. Sign up now.
> http://mailplus.yahoo.com
> 
> --
> To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>
> 


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus  Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message