PDA

View Full Version : [java] concatenazione vector


Miky Mouse
22-12-2007, 17:24
come da oggett, ho guardato i metodi definiti sui vector e non ne ho trovato uno che vada bene, praticamente mi serve una funzione che dati 2 vector aggiunge il primo in coda al secondo, oppure ne crea uno nuovo fondendoli va bene lostesso.

se non esiste (come purtroppo credo) sarebbe più corretto estendere la classe vector e implementare il metodo che mi serve o creare una funzione esterna statica?

ps ovviamente sono sicuro che i vector contengono oggetti omogenei

afsdfdlecosdfsfdcco
22-12-2007, 17:49
come da oggett, ho guardato i metodi definiti sui vector e non ne ho trovato uno che vada bene, praticamente mi serve una funzione che dati 2 vector aggiunge il primo in coda al secondo, oppure ne crea uno nuovo fondendoli va bene lostesso.

se non esiste (come purtroppo credo) sarebbe più corretto estendere la classe vector e implementare il metodo che mi serve o creare una funzione esterna statica?

ps ovviamente sono sicuro che i vector contengono oggetti omogenei



non va bene addAll? :stordita:


Vector v1 = ...
Vector v2 = ...

v1.addAll(v2);

^TiGeRShArK^
22-12-2007, 19:09
...e tra l'altro l'uso di Vector è sconsigliato ma si dovrebbe usare ArrayList.

Miky Mouse
22-12-2007, 19:39
non va bene addAll? :stordita:


Vector v1 = ...
Vector v2 = ...

v1.addAll(v2);


si giusto non ci avevo pensato, credevo di dovermi creare un iteratore per scorrere uno dei due vector...

...e tra l'altro l'uso di Vector è sconsigliato ma si dovrebbe usare ArrayList.

come mai? comunque mi cambia poco, tanto i metodi definiti sulla struttura sono tutti uguali o quasi....

rivoluzionario
22-12-2007, 20:35
come mai? comunque mi cambia poco, tanto i metodi definiti sulla struttura sono tutti uguali o quasi....

Vector è sincronizzato e quindi è più lento di ArrayList.

afsdfdlecosdfsfdcco
22-12-2007, 21:27
Vector è sincronizzato e quindi è più lento di ArrayList.

Dipende dall'utilizzo, se gli servono thread-safe meglio i Vector...

Miky Mouse
22-12-2007, 22:13
Dipende dall'utilizzo, se gli servono thread-safe meglio i Vector...

no no... andrebbero benissimo gli arraylist ma il prof a lezione non li ha mai usati, per questo chiedo ;)

banryu79
23-12-2007, 00:16
Nelle Collection di Java, la classe Vector è stata mantenuta per agevolare chi proviene dal linguaggio C++, dato che in quell'ambito si utilizza la Standard Template Library che mette a disposizione appunto una classe Vector, quindi familiare a chi proviene da quel linguaggio.

In Java al posto di Vector sarebbe più indicato usare ArrayList, che è l'implementazione di List.

Anche Vector infatti (in nelle Collection) è un'implemetazione di List, però a differenza di tutte le altre implementazioni della Collection, è sincronizzato.

Ciao :)

^TiGeRShArK^
23-12-2007, 00:53
Dipende dall'utilizzo, se gli servono thread-safe meglio i Vector...

no, anche in caso di collections synchronized è sempre meglio utilizzare le classi introdotte da java 1.2 in poi (ArrayList, ecc..) e eventualmente wrappare la lista con il metodo Collections.synchronizedList.
L'unico caso in cui si deve usare per forza Vector è con J2ME dato che non esiste la classe ArrayList o eventualmente con JADE dato che giovanni e fabio ai tempi avevano deciso di usare i Vector per mantenere la compatibilità del codice tra J2SE e J2ME dato che la classe jade.util.leap.ArrayList, se non erro, con J2ME viene compilata come Vector (quelle maledette direttive interpretate da non mi ricordo quale plugin di ant in fase di compilazione secondo me sono un vero casino in certe parti di codice :p)