OVH Cloud OVH Cloud

acces matrice multi dimension

3 réponses
Avatar
Manu
bonjour,
je tente d'acceder a des informations dans un tableau multi dimension
mais je n'y arrive pas :
Hashtable mapTest = new Hashtable();
String[] aT = {"mon commentaire" , new Vector() };
mapTest.put("maKey_1", aT );
aT = {"un autre commentaire" , new Vector() };
mapTest.put("maKey_2", aT );

comment lire le commentaire, et acceder aux vector ?
comment creer directement et du style :
mapTest.put("maKey_2",String[]{"un autre commentaire",new Vector()});
sans passer par :
String[] aT = {"mon commentaire" , new Vector() };
mapTest.put("maKey_1", aT );

merci de votre aide, je migre de language (meme si je faisais du java il
y six ans) et c'est dur dur de reprendre...

manu

3 réponses

Avatar
Manu
bonjour,
je tente d'acceder a des informations dans un tableau multi dimension
mais je n'y arrive pas :
Hashtable mapTest = new Hashtable();
String[] aT = {"mon commentaire" , new Vector() };
mapTest.put("maKey_1", aT );
aT = {"un autre commentaire" , new Vector() };
mapTest.put("maKey_2", aT );

comment lire le commentaire, et acceder aux vector ?
comment creer directement et du style :
mapTest.put("maKey_2",String[]{"un autre commentaire",new Vector()});
sans passer par :
String[] aT = {"mon commentaire" , new Vector() };
mapTest.put("maKey_1", aT );

merci de votre aide, je migre de language (meme si je faisais du java il
y six ans) et c'est dur dur de reprendre...

manu


Bon ben voila... mais franchement je sais pas si c'est bien code
j'attend vos avis :
Hashtable mapTest = new Hashtable();
mapTest.put("maCle", new Object[]{"commentaire",new Vector()} );
Object[] test=(Object[])mapTest.get("maCle");
writeact("Object test : " + test[0] );
writeact("Object test : " + test[1] );
((Vector)test[1]).addElement(monPointeur);
writeact("Object test : " + test[1] );

Nb : l'appli doit etre "synchronized/thread" donc avec Hashtable et Vector.
Nb 2 : writeact = methode ecrivant sur la sortie selectionne (ecran,
socket, etc...)

merci des commentaires

manu

Avatar
Jocelyn
Salut,
visiblement tu manipules des choses qui pourraient (devraient?) etre
codees en objets. Je m'explique: dans ta table, les informations sont de
cette nature a priori:
- String commentaire
- Vector jeSaisPasQuoi

Plutot que de te trimbaler du code lourdingue et qui va vite devenir
impossible a maintenir, cree une classe Information(au hasard) contenant
ces 2 attributs.
Ton code va devenir:
Hashtable mapTest = new Hashtable();
mapTest.put("maCle", new Information("commentaire",new Vector()));
Information test=(Information)mapTest.get("maCle");
writeact("Commentaire : " + test.getCommentaire);
writeact("Je sais pas quoi : " + test.getJeSaisPasQuoi());
test.getJeSaisPasQuoi().addElement(monPointeur);
writeact("Je sais pas quoi : " + test.getJeSaisPasQuoi());


Bon ben voila... mais franchement je sais pas si c'est bien code
j'attend vos avis :
Hashtable mapTest = new Hashtable();
mapTest.put("maCle", new Object[]{"commentaire",new Vector()} );
Object[] test=(Object[])mapTest.get("maCle");
writeact("Object test : " + test[0] );
writeact("Object test : " + test[1] );
((Vector)test[1]).addElement(monPointeur);
writeact("Object test : " + test[1] );

Nb : l'appli doit etre "synchronized/thread" donc avec Hashtable et Vector.
Nb 2 : writeact = methode ecrivant sur la sortie selectionne (ecran,
socket, etc...)

merci des commentaires

manu


Avatar
Manu
hum hum, eh bien oui c'est beaucoup plus simple... par contre j'ai juste
une question si tu en connais la reponse :
quelle methode est la plus economique en memoire ?
Il s'agit d'une appli d'echange de donnees en socket, il risque d'il y
avoir pas mal d'echange d'information.
Le serveur n'etant pas dedie a cette tache et que je ne compte pas non
plus lui attribuer plus de 5 % de la mem utilise ! (en gros 25 mo)



Salut,
visiblement tu manipules des choses qui pourraient (devraient?) etre
codees en objets. Je m'explique: dans ta table, les informations sont de
cette nature a priori:
- String commentaire
- Vector jeSaisPasQuoi

Plutot que de te trimbaler du code lourdingue et qui va vite devenir
impossible a maintenir, cree une classe Information(au hasard) contenant
ces 2 attributs.
Ton code va devenir:
Hashtable mapTest = new Hashtable();
mapTest.put("maCle", new Information("commentaire",new Vector()));
Information test=(Information)mapTest.get("maCle");
writeact("Commentaire : " + test.getCommentaire);
writeact("Je sais pas quoi : " + test.getJeSaisPasQuoi());
test.getJeSaisPasQuoi().addElement(monPointeur);
writeact("Je sais pas quoi : " + test.getJeSaisPasQuoi());