On Thursday 10 April 2008 01:15, Daniel Cheng wrote: > On Thu, Apr 10, 2008 at 6:26 AM, Matthew Toseland > <toad at amphibian.dyndns.org> wrote: > > On Wednesday 09 April 2008 17:01, you wrote: > > > Author: j16sdiz > > > Date: 2008-04-09 16:01:28 +0000 (Wed, 09 Apr 2008) > > > New Revision: 19114 > > > > > > Modified: > > > trunk/freenet/src/freenet/support/DoublyLinkedList.java > > > trunk/freenet/src/freenet/support/DoublyLinkedListImpl.java > > > > > trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java > > > Log: > > > javadoc and style fix > > > > > > > > > Modified: trunk/freenet/src/freenet/support/DoublyLinkedList.java > > > =================================================================== > > > --- trunk/freenet/src/freenet/support/DoublyLinkedList.java 2008-04-09 > > 16:01:05 UTC (rev 19113) > > > +++ trunk/freenet/src/freenet/support/DoublyLinkedList.java 2008-04-09 > > 16:01:28 UTC (rev 19114) > > > @@ -7,30 +7,54 @@ > > > * @author tavin > > > */ > > > public interface DoublyLinkedList { > > > + public abstract Object clone(); > > > > > > - public abstract Object clone(); > > > - > > > + /** > > > + * List element > > > + */ > > > public interface Item { > > > + /** > > > + * Get next {@link Item}. May or may not return > > > + * <code>null</code> if this is the last <code>Item</code>. > > > > IIRC we have a bumper stopper item, don't we? Hmm, but we do check for null... > > > > No, we have two different method / behavior when that is the last item. > 1. DoublyLinkedList.getNext(Item) > --> always return null > > 2. DoublyLinkedList.Item.getNext() . > --> return null /or/ DoublyLinkedListImpl._tailptr > > The second one involve some implementation details, hence the "may or may not" > phase. I did wondered why we need two different method. > > Eventually, I want to migrate all DoublyLinkedList usage to > java.util.LinkedList / ArrayList / SortedSet. They are better tested > and optimized by jre vendors. But this migration would take some time.
Yes and no. We should only use DoublyLinkedList where we need it. But there are places where we do need it. Specifically, anywhere where an element needs to be able to remove itself - LRUHashtable for example, and IIRC there are other classes in support/ that need it. Using DoublyLinkedList gives us a significant performance gain here. > > Regards, > Daniel Cheng -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20080410/df1c2b29/attachment.pgp>