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>