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

 


Dernière réponse
Sujet : [java] convertir un vecteur en un tableau a 2 dim
benou (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().

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
benou (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().
veryfree

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

petoulachi 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é
darklord22

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]

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

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]

darklord22

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 ...

veryfree

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...

darklord22 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 ...
darklord22 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 ?

veryfree

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

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

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]

darklord22 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+

veryfree

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

darklord22 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 ?
petoulachi 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 ...

veryfree 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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)