Newsgroup: it.comp.java
Titolo: Code FIFO in java: help pls!!!

Ciao a tutti
avrei bisogno di implementare una piccola coda fifo in java, ma ho visto che
le librerie standard includono solo le LIFO (tramite vettori). Sapreste
dirmi dove trovo una buona implementazione per non stare li' a scrivermela?
Non mi interessano cose particolari, in pratica devo solo inserire in coda
degli elementi e poterli prelevare, togliere, modificare.
Grazie anticipatamente :)
--
EmmeDi@notebook 
http://www.emmedi.da.ru
Togliere TOGLIMI per rispondermi in mail

EmmeDi@Notebook wrote:

Mi sembra roba da java.util.ArrayList, facenti parte delle librerie
standard: come dici tu puoi inserire col metodo add(Object o) , prelevare
con get(int index), togliere con remove(int index) , modificare con 
set(int index).
Tra l'altro ci sono tutta una serie di facili algoritmi per gli array ed
ArrayList.
Sicuramente mi sfugge qlc.
-- 
Ciao. Fabrizio. ( icq: 241182067 ) 
< MISTAH KURTZ -- HE DEAD.
                A penny for the Old Guy> 
(T.S. Elliot: the hollow men)


Ciao
Anzitutto grazie per la risposta, cmq e' piu' probabile che qualcosa sfugga
a me :)
Pero', per capire meglio, in pratica posso usare una ArrayList e su questa
rimuovere, aggiungere ecc. ottenendo una gestione tipo FIFO? Cioe' senza
dover ogni volta muovere gli elementi? Lo fa in automatico?
Grazie ancora


 EmmeDi@notebook 
http://www.emmedi.da.ru
Si certo è il bello delle ArrayList: guarda sulla documentazione.
http://java.sun.com/j2se/1.4.1/docs/api/java/util/ArrayList.html
Ho capito cosa intendi e ti faccio un paio di esempi:
mettiamo di avere la nostra bella ArrayList riempita con 10 elementi  (puoi
sapere la lunghezza col metodo size() ), se togli un elemento (per es.
facendo remove(5)) tutti gli elementi da 0 a 4 rimaranna nella loro
posizione e gli elementi da 6 a 9 scaleranno indietro di un posto (e
l'arrayList a quel punto sarà di 9 elementi).
Stessa cosa se tu aggiungesi non in coda (con un semplice add(Object o)) ma
in una determinata posizione (con add(int index, Object o)) per es. add(8,
new Integer(5)): a quel punto tutte le posizioni da 0 a 7 rimarrebbero le
medesime e le posizioni dalla 8 alla 9 scalerebbero di un posto in avanti
(e l'ArrayList sarebbe di 11 elementi).
Spero di essere stato chiaro.
-- 
Ciao. Fabrizio. ( icq: 241182067 )
http://groups.yahoo.com/group/jug_brescia/


 
Usa una implementazione di List:
 
http://java.sun.com/j2se/1.4.1/docs/api/java/util/List.html
Per il FIFO forse è più efficiente LinkedList rispetto ad ArrayList, ma 
dubito che le differenze di performance siano sostanziali a meno che tu 
non debba gestire grandissime quantità di dati.
Comunque se manipoli sempre l'oggetto tramite l'interfaccia e non il 
tipo concreto poi può cambiare facilmente implementazione. Es:
   public void setItems(List items) {
       //...
   }
invece di
   public void setItems(ArrayList items) {
       //...
   }
Ciao.
\mirko


Chiarissimo, grazie mille


 non debba gestire grandissime quantità di dati.
Ciao Mirko, quali sono le differenze sostanziali tra ArrayList e LinkedList?
Leggendo sulla documentazione non riesco a capirlo, ... anzi miglioro la
domanda : in quale caso useresti uno a discapito dell'altro al di là delle
performance (cmq importanti) ?
-- 
Ciao. Fabrizio.(icq:241182067) 
http://groups.yahoo.com/group/jug_brescia/


 
ArrayList usa internamente un normale array, è più veloce nell'accedere 
ad un elemento qualsiasi ma più lenta se devi inserire o rimuovere 
elementi che non siano alla fine perché deve risistemare l'array.
In una LinkedList ogni elemento ha un riferimento all'elemento 
precedente e a quello successivo, quindi operazioni di inserimento o 
eliminazione sono più efficienti, ma lo è meno l'accesso.
A fini pratici puoi tranquillamente usare quasi sempre ArrayList, 
l'importante è manipolare gli oggetti usando l'interfaccia List e non 
l'implementazione concreta, così se proprio serve puoi cambiare 
implementazione modificando una sola riga di codice. :-)
Ciao.
\mirko

 \mirko
Minchia si vede che sei certificato :-)
Grazie.


 avrei bisogno di implementare una piccola coda fifo in java
Ne trovi una a 
http://sadun-util.sourceforge.net/api/index.html
ma e' solo per pulizia di interfaccia.
-- 
Fighting for peace is like fucking for virginity
ObjectZone - 
http://space.tin.it/computer/csadun