Po par testoch s ArrayList a LinkedList sa mi zda, ze LinkedList ma vyznam
iba v pripade, ze potrebujete pridavat prvky inde ako na koniec pola. Vtedy
ArrayList musi kopirovat koniec pola. Napr.
List list = new ArrayList();
for (int i = 0; i < 100000; i++) {
list.add(0, new Integer(i));
}
trva na mojom stroji viac ako 7s, zatial co to iste s LinkedList len nieco
cez 100ms. Pri pridavani na koniec pola potrebuje LinkedList asi dva krat
tolko casu ako ArrayList...
bobes
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Oto Buchta
Sent: Wednesday, October 12, 2005 12:28
To: Java
Subject: Re: Parametr metody List.toArray(Object[])
On Wednesday 12 of October 2005 12:24, Martin Kuba wrote:
> Patrik Beno wrote:
> > proste
> > list.toArray(new String[list.size()])
> > ma svoj zmysel...
>
> Naprosty souhlas. Kdyz uz tu probirame Listy, donedavna
> jsem s oblibou pouzival konstrukci
>
> List l = new LinkedList();
> ResultSet rs = jdbcStatement.executeQuery();
> while(rs.next()) {
> l.add(rs.getString(1));
> }
> String[] s = (String[]) l.toArray(new String[l.size()]);
>
> abych prevedl predem neznamy pocet vracenych hodnot na pole.
> Mel jsem pocit, ze LinkedList je na to vhodny, protoze zbytecne
> nealokuje navickrat zadna pole.
>
> A nedavno mne Heinz Kabutz presvedcil, ze je rozumnejsi pouzivat
> i na tohle ArrayList, protoze i kdyz si pri postupnem rustu
> musi naalokovat vic poli, porad spotrebuje nakonec min pameti
> nez LinkedList, ktery na kazdy prvek potrebuje navic jeden ukazatel.
> Toz se chci o tohle zjisteni podelit.
Dva. LinkedList je obousmerny spojovy seznam. LinkedList.Entry:
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
Entry(E element, Entry<E> next, Entry<E> previous) {
this.element = element;
this.next = next;
this.previous = previous;
}
}
Apropros mate vubec nekdo nejaky use-case, kde LinkedList je lepsi nez
ArrayList()?
--
Oto 'tapik' Buchta, [EMAIL PROTECTED]
Senior Engineer, Systinet Corp,
http://www.systinet.com