Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1336 connectés 

  FORUM HardWare.fr
  Programmation

  [java] convertir un vecteur en un tableau a 2 dim

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] convertir un vecteur en un tableau a 2 dim

n°85633
veryfree
Posté le 03-01-2002 à 12:09:11  profilanswer
 

bonjour tt le monde
j ai besoin de votre aide et oui c encore moi avec mes probleme de vecteurs  ...
voila le probleme
j ai un vecteur qui contien des vecteurs
en fait chaque éléments du premier vecteur est lui meme un vecteur
je voudrait copié leur contenu ds un tableau a 2 dim
 
merci de votre aide
jerry

 

[edtdd]--Message édité par veryfree--[/edtdd]

mood
Publicité
Posté le 03-01-2002 à 12:09:11  profilanswer
 

n°85655
petoulachi
A fortiori, brigadier chef
Posté le 03-01-2002 à 12:47:42  profilanswer
 

Bin tu fais un truc a la main, barbare :
 

Code :
  1. TQ pas a la fin du vecteur principal
  2.     on se positionne sur le debut du vecteur secondaire
  3.     TQ pas la fin du vecteur secondaire
  4.         ajouter l'element dans ton tableau
  5.         passer a l'element suivant du vecteur secondaire
  6.     FTQ
  7.     passer à l'element suivant du vecteur principal
  8. FTQ


 
Voila c l'algo général, ya pas les indices pour ton tableau a 2 dim, mais 2 entiers (aller au hasard i et j) et voila ...

n°85676
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 03-01-2002 à 13:22:57  profilanswer
 

Euh, c'est bien beau tout ca mais un vecteur par déf. n'a pas de taille fixe. Si tu as un truc du genre
 
Vecteur  1 contient 50 vecteurs
Vecteur  2 contient 1 vecteurs
Vecteurs 3 contient 150 vecteurs
 
Et puis dans les vecteurs de vecteurs t'as des éléments allant de 3000 éléments à 1 éléments
 
tu fais un tableau 150*3000 ???
Où est l'intérêt ?
 
Si c'est fixe alors pq avoir fait des vecteurs ?


---------------
What is popular is not always right, what is right is not always popular :D
n°85708
veryfree
Posté le 03-01-2002 à 14:16:03  profilanswer
 

darklord22 a écrit a écrit :

Euh, c'est bien beau tout ca mais un vecteur par déf. n'a pas de taille fixe. Si tu as un truc du genre
 
Vecteur  1 contient 50 vecteurs
Vecteur  2 contient 1 vecteurs
Vecteurs 3 contient 150 vecteurs
 
Et puis dans les vecteurs de vecteurs t'as des éléments allant de 3000 éléments à 1 éléments
 
tu fais un tableau 150*3000 ???
Où est l'intérêt ?
 
Si c'est fixe alors pq avoir fait des vecteurs ?  




bon on avance un peu la merci
en fait le vecteur qui est contenu ds le vecteur a une taille fixe ca c sur (elle depassera jamais 10) et croi moi c plus simple d utilisé ce qui existe deja
merci

n°85717
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 03-01-2002 à 14:28:05  profilanswer
 

Alors tu fais ca
 

Code :
  1. public Object[] createArray(Vector vector)
  2. {
  3.   Object[] arr = new Object[vector.size(), 10];
  4.   (for int i=0; i< vector.size(); i++)
  5.   {
  6.      Vector v = (Vector) vector.elementAt(i);
  7.     (for int j=0; j< v.size(); j++)   
  8.     {
  9.         arr[i,j] =  (Object) v.elementAt(j);
  10.      }
  11.   }
  12.   return arr;
  13. }


 
Tu remplace Object par le type de ton objet qu'il y a ds les vecteurs ....
 
A+


---------------
What is popular is not always right, what is right is not always popular :D
n°85723
veryfree
Posté le 03-01-2002 à 14:35:13  profilanswer
 

darklord22 a écrit a écrit :

Alors tu fais ca
 

Code :
  1. public Object[] createArray(Vector vector)
  2. {
  3.   Object[] arr = new Object[vector.size(), 10];
  4.   (for int i=0; i< vector.size(); i++)
  5.   {
  6.      Vector v = (Vector) vector.elementAt(i);
  7.     (for int j=0; j< v.size(); j++)   
  8.     {
  9.         arr[i,j] =  (Object) v.elementAt(j);
  10.      }
  11.   }
  12.   return arr;
  13. }


 
Tu remplace Object par le type de ton objet qu'il y a ds les vecteurs ....
 
A+  




il n est pas a 2 dimention ton tableau c normal?

 

[edtdd]--Message édité par veryfree--[/edtdd]

n°85727
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 03-01-2002 à 14:42:05  profilanswer
 

non toi ?
 
et arr[i,j] c'est pas deux dimensions pour toi ?


---------------
What is popular is not always right, what is right is not always popular :D
n°85728
veryfree
Posté le 03-01-2002 à 14:45:19  profilanswer
 

darklord22 a écrit a écrit :

non toi ?
 
et arr[i,j] c'est pas deux dimensions pour toi ?  




excuse moi c pq on declare pas de la meme facon
j aurait mis Object[][] arr = new Object[vector.size(), 10];
et arr[i][j] je pensait pas que ca existait ce truc avant...
merci encore

n°85729
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 03-01-2002 à 14:45:40  profilanswer
 

oula premiere fois de ma vie que je fais des arrays deux dimensions en Java. Bon bon je savais pas
 
Voila une version correcte
 

Code :
  1. public Object[][] createArray(Vector vector)
  2. {
  3. Object[][] arr = new Object[vector.size()][10];
  4. for (int i=0; i< vector.size(); i++)
  5. {
  6.     Vector v = (Vector) vector.elementAt(i);
  7.    for (int j=0; j< v.size(); j++)     
  8.    {
  9.        arr[i][j] =  (Object) v.elementAt(j);
  10.     }
  11. }
  12. return arr;
  13. }


 
mais bon tu aurais pu deviner que i, j c'était l'index du tableau non ?


---------------
What is popular is not always right, what is right is not always popular :D
n°85731
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 03-01-2002 à 14:47:27  profilanswer
 

Mais une question quand meme. C'est super simple à faire. Si tu sais manipuler les vecteurs, comment ca se fait que tu ne sais pas le faire toi même ?
 
C'est juste une question ...


---------------
What is popular is not always right, what is right is not always popular :D
mood
Publicité
Posté le 03-01-2002 à 14:47:27  profilanswer
 

n°85732
veryfree
Posté le 03-01-2002 à 14:50:43  profilanswer
 

darklord22 a écrit a écrit :

Mais une question quand meme. C'est super simple à faire. Si tu sais manipuler les vecteurs, comment ca se fait que tu ne sais pas le faire toi même ?
 
C'est juste une question ...  




ben en fait je pensait qu il y avait une facon plus optimisé de faire ce truc avec la methode toArray() de la classe vecteur par ex... pq ici j ai vu des choses assez interessante et j ai beaucoup appris
sinon j avait compris que i et J etait des indice bien sur mais c vrais que ta declaration me paraissait si inhabituelle...

n°85751
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 03-01-2002 à 15:14:25  profilanswer
 

veryfree a écrit a écrit :

 
ben en fait je pensait qu il y avait une facon plus optimisé de faire ce truc avec la methode toArray() de la classe vecteur par ex... pq ici j ai vu des choses assez interessante et j ai beaucoup appris
sinon j avait compris que i et J etait des indice bien sur mais c vrais que ta declaration me paraissait si inhabituelle...  




 
Tu sais. C'est pas parce que tu appelles une méthode que c'est une opération atomique. Il y a bcp de chance pour que ton opération toArray() fasse EXACTEMENT la meme chose que mon code. C'est pas parce que tu appelles une méthode que le process derrière est simple ...


---------------
What is popular is not always right, what is right is not always popular :D
n°85756
veryfree
Posté le 03-01-2002 à 15:18:53  profilanswer
 

darklord22 a écrit a écrit :

 
 
Tu sais. C'est pas parce que tu appelles une méthode que c'est une opération atomique. Il y a bcp de chance pour que ton opération toArray() fasse EXACTEMENT la meme chose que mon code. C'est pas parce que tu appelles une méthode que le process derrière est simple ...  




jdit pas que le processus est simple mais que c plus rapide(en temps d execution) d utilisé des methodes de l API

 

[edtdd]--Message édité par veryfree--[/edtdd]

n°85860
benou
Posté le 03-01-2002 à 18:03:52  profilanswer
 

ben pas vraiment : l'API est faite en java (les sources sont dispos) => y a pas de raison que l'execution soient plus rapide ...

n°85957
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 04-01-2002 à 08:22:34  profilanswer
 

benou a écrit a écrit :

ben pas vraiment : l'API est faite en java (les sources sont dispos) => y a pas de raison que l'execution soient plus rapide ...  




 
:D yes !
 
Comme je le disais, tout ca a un effet plutôt psychologique sur l'utilisateur. Moi j'ai déjà développé pas mal d'API pour d'autres développeurs et ils pensent exactement comme toi. Lorqsu'ils voient une de mes méthodes (qui envoit un packet sur un bus orienté objet) il pense que c'est atomique, simple quoi. Si il voyait tout ce qui se fait derrière pour que ca marche ...
 
On peut aller voir cette méthode toArray() si tu veux pour voir ce qu'elle fait ;)
 

Citation :


/**
 * Returns an array containing all of the elements in this Vector
 * in the correct order.
 *
 * @since 1.2
*/
public synchronized Object[] toArray() {
 Object[] result = new Object[elementCount];
 System.arraycopy(elementData, 0, result,  
                         0, elementCount);
 return result;
}


 
Par contre arraycvopy est natif donc il se peut que ce soit effectivement un poil plus rapide que ce qui t'es proposé. Mais il y a un pas entre un poil et vraiment plus rapide ...
 
C'est pas atomique alos memem si l'effet psychologique "un appel de méthode" joue un peu ...

 

[edtdd]--Message édité par darklord22--[/edtdd]


---------------
What is popular is not always right, what is right is not always popular :D
n°85963
petoulachi
A fortiori, brigadier chef
Posté le 04-01-2002 à 09:20:06  profilanswer
 

certes, mais dans tout les cas, lorsqu'on a le choix il vaut mieu utiliser les methodes de l4API car :
-c plus propre
-c plus lisible
-tu te fais pas chier a reecrire ce qui existe deja
-c tres souvent plus optimisé

n°85974
veryfree
Posté le 04-01-2002 à 10:02:59  profilanswer
 

darklord22 a écrit a écrit :

 
 
:D yes !
 
Comme je le disais, tout ca a un effet plutôt psychologique sur l'utilisateur. Moi j'ai déjà développé pas mal d'API pour d'autres développeurs et ils pensent exactement comme toi. Lorqsu'ils voient une de mes méthodes (qui envoit un packet sur un bus orienté objet) il pense que c'est atomique, simple quoi. Si il voyait tout ce qui se fait derrière pour que ca marche ...
 
On peut aller voir cette méthode toArray() si tu veux pour voir ce qu'elle fait ;)
 

Citation :


/**
 * Returns an array containing all of the elements in this Vector
 * in the correct order.
 *
 * @since 1.2
*/
public synchronized Object[] toArray() {
 Object[] result = new Object[elementCount];
 System.arraycopy(elementData, 0, result,  
                         0, elementCount);
 return result;
}


 
Par contre arraycvopy est natif donc il se peut que ce soit effectivement un poil plus rapide que ce qui t'es proposé. Mais il y a un pas entre un poil et vraiment plus rapide ...
 
C'est pas atomique alos memem si l'effet psychologique "un appel de méthode" joue un peu ...  
 
 




merci pour tout

n°86216
benou
Posté le 04-01-2002 à 20:55:17  profilanswer
 

(juste histoire de rajouter mon grain de sable)
 
en plus, comme la méthode est synchronized, son execution est plus lente. 3 fois plus lente en moyenne d'apres ce que m'avait dit un prof du temps de la fac (j'ai jamais vérifié ....)
 
et puis je pense que si tu cherches les performances, c'est une bonne idée d'utiliser System.arraycopy().


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [java] convertir un vecteur en un tableau a 2 dim

 

Sujets relatifs
[Java] Fichier de config, comment ne pas en hardcoder le path ?[HTML] % dans un tableau
[html] image de fond d'un tableau[Java] Date Calendar ...
[java] Comment rendre une fenetre "always on top" ??[java] lancer l'execution d'un programme
[JAVA] Questions en vrac :)Ou telecharger Java Workshop?
[PHP-JAVA] Progress bar upload ?[ JAVA ] [JSP ] explication de ca...
Plus de sujets relatifs à : [java] convertir un vecteur en un tableau a 2 dim


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR