Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Risolto [Java] Come creare un' array o un insieme dinamico?

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Risolto [Java] Come creare un' array o un insieme dinamico?

Messaggioda Foto UtenteTardoFreak » 7 dic 2010, 16:06

Buon giorno a tutti gli amici del forum.
Avrei bisogno di creare in Java un' array a dimensione variabile o un insieme a cui posso aggiungere e togliere elementi. In pratica ho un oggetto ottenuto da una mia classe e vorrei avere un ... qualcosa tipo un' array o un insieme (in Visual Basic vengono chiamati collection) ma non di dimensioni fisse.
Le array, una volta dichiarate, manetngono quella dimensione.
Ho cercato nel libro e nei tutorials ed ho trovato la classe Vector (che NetBeans mi indica come obsoleta) che pero' non riesco ad utilizzare.
In pratica uso il metodo
Elemento el = new Elemento();
Vector elementi = new Vector();
elementi.add(new Elemento) ;

per creare un elemento ed inserirlo nel vettore. Poi, dovrei traferire il contenuto di el (classe Elemento) dentro quello nel vettore, quindi scrivo
n = elementi.size()-1;
elementi.elementAt(n) = el;

E, orca puzzola, non mi funziona.

Ed ora le domande:
- dove sbaglio?
- sono completamente fuori strada?
- cosa dovrei studiarmi e/o sperimentare per fare una cosa del genere?
- ArrayList potrebbe fare quello che mi serve?
- esiste solo Vector o ci sono metodi migliori per implementare un' array o un qualcosa di dimensioni variabili?
In Visual basic creavo un' array di records che poi ridimensionavo con Redim (Preserve) se mi serviva piu' grande.

Il fatto e' che sto impazzendo, qualcuno mi potrebbe gentilmente aiutare? [-o<
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[2] Re: [Java] Come creare un' array o un insieme dinamico?

Messaggioda Foto Utentec1b8 » 7 dic 2010, 16:27

la elementAt() ritorna un oggetto del vettore, non lo puoi cambiare.
Io utilizzerei la HashMap al posto della Vector.
Devi assegnare una chiave ad ogni elemento, ma la chiave potrebbe essere il tuo teorico indice.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[3] Re: [Java] Come creare un' array o un insieme dinamico?

Messaggioda Foto UtenteTardoFreak » 7 dic 2010, 16:41

Cerco di spiegare meglio quello che sto facendo. Ora sto provando con ArrayList
1 - ho un elemento che si chiama Elemento elem (tipo una struct in C) in cui riempio opportunamente i campi leggendo dati da un file di testo. Devo poi inserirlo in un' array dinamica chiamata elementi.
2 - Quando e' pronto creo un nuovo elemento nell' array con elementi.add(new Elemento()); Suppongo quindi che l' array abbia fisicamente un oggetto in piu'. A questo punto devo passare i valori contenuti in elem nel nuovo oggetto creato quindi.
3 - Copio l' oggetto da me riempito in quello all' ultima posizione dell' array list con:
n = elementi.size()-1;
elementi.set(n, elem);


Quando vado a leggere gli elementi dell' array scopro che sono tutti uguali all' ultimo che ho inserito. ?%
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[4] Re: [Java] Come creare un' array o un insieme dinamico?

Messaggioda Foto Utentec1b8 » 7 dic 2010, 17:11

Perdonami ma non avevo capito nulla :oops:
Quando fai la elementi.set(n, elem); assegni all'elemento n l'oggetto elem, non assegni i valori di elem all'oggetto di posizione n.
Se non crei ogni volta un nuovo elem, non la elementi.add(new Elemento());, ma proprio un nuovo elem ogni volta che leggi nuovi dati dal file, ottieni che tutti gli elementi dell'array sono uguali.
Dovresti quindi fare:
- creare un oggetto Elemento
- riempirlo con i dati letti dal file
- quando pronto aggiungerlo all'array
- tornare al punto 1 (creare un nuovo elemento)

Adesso spero di aver capito... #-o
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[5] Re: [Java] Come creare un' array o un insieme dinamico?

Messaggioda Foto UtenteTardoFreak » 7 dic 2010, 18:00

Hai capito benissimo ed io, grazie al tuo intervento, ho risolto il problema.
Facendo proprio un new per ogni elemento. :ok:

Quindi Fabio, ti ringrazio assai ^_^

E vado a scrivere "risolto" sul titolo. :mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti