Newsgroup: it.comp.java
Titolo: accesso ad un Vector di Vector

Ciao a tutti
Ho creato un oggetto Vector, dopo di che con un ciclo for ho aggiunto alle
locazioni del vettore delle istanze sempre della classe vector. In tal modo:
Vector vettore=new Vector(25,5);
for (int i=0; i<vettore.getSize();i++){
Vector aggiunto=new Vector(26,5);
vettore.add(i,aggiunto);
}
A questo punto dovrei avere un Vector di Vector. Il problema č che non riesco
ad accedere alle locazioni dei sottovettori. Cioč il codice piů intuitivo
dovrebbe essere:
(vettore.get(0)).add(0,"stringa");
cioč dovrebbe aggiungere nella prima locazione del primo sottovettore la
stringa: "stringa".
Il fatto č che vettore.get(0) mi rende un oggetto Object a cui non posso
applicare il metodo add() della classe Vector. Ho provato a fare il casting ma
non funziona ugualmente..
Qualcuno potrebbe darmi qualche dritta??????
Grazie   
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Scusa, ma così non funziona?
Vector primo = (Vector)vettore.get(0);
Oggetto oggetto = (Oggetto)primo.get(indice);
primo.addElement(oggetto2);
.......



Io faccio cosě :
((Vector)vettore.elementAt(x)).elementAt(y)       
per accedere a un elemento
((Vector)vettore.elementAt(x)).addElement(y)       
per aggiungerne uno
spero di aver capito la domanda....
Lello

Ciao a tutti!!!
Ho un problema, non riesco ad accedere ad un elemento di un Vector di Vector.
In sostanza ho istanziato un vettore del tipo
Vector vettore=new Vector(25,5);
e con un ciclo for ho aggiunto anche gli altri::
for (int i=0;i<25;i++){
Vector aggiunto=new Vector(10,5);
vettore.add(i,aggiunto);
}
Ora per accedere per esempio al componente (0,0) (primo elemento del primo
sottovettore) la cosa piu intuitiva dovrebbe essere:
(vettore.get(0)).add(0,"ciao"); oppure 
(vettore.elementAt(0)).add(0,"ciao"); 
Entrambe però non funzionano, perche il metodo get() e elementAt() rendono un
oggetto Object che non possiede il metodo add().
Ho provato anche col casting ma non funziona..
Sapreste darmi qualche dritta??


> Sapreste darmi qualche dritta??
L'unica è "castare" correttamente, perchè non ci mostri come fai, almeno
possiamo correggere eventuali errori?
Giuseppe

}
Ci sono 2 errori:
A) l'utilizzo di getSize() che non esiste .. dovrebbe essere solo size()
B) stai creando un nuovo vettore e poi fai un ciclo da 0 fino alla
dimensione di questo nuovo vettore (che è ovviamente 0!!) quindi non
inserirai nemmeno un dato nel vettore!!!.
Tanto è vero che se provi poi ad accedere all'elemento di posizione 0 del
vettore otterrai un errore di Array index out of range.
Quindi ... mi raccomando occhio! ..
ciao ciao
Dani

 Ho provato anche col casting ma non funziona..
Occhio alle precedenze degli operatori: se scrivi
(Vector)vettoreDiVettori.get(0).addElement(...) siccome '.' ha una
precedenza maggiore di '()' (casting), il compilatore cerca di eseguire
add(...) sul risultato di get(0) (che e' Object) e *poi* fare il cast del
risultato a Vector.. che ovviamente non funziona, dato che Object non ha
un metodo addElement(). 
Il trucco e' usare parentesi per modificare le precedenze:
( (Vector)vettoreDiVettori.elementAt(0) ).addElement(...)
e il compilatore esegue l'elementAt(), fa il cast del risultato a Vector,
e quindi "trova" il metodo addElement(...) 
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun