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

  FORUM HardWare.fr
  Programmation
  Java

  Le meilleur moyen de représenter des matrices en java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Le meilleur moyen de représenter des matrices en java

n°536984
sdk
Posté le 11-10-2003 à 13:37:29  profilanswer
 

voila j'ai une matrice
 
100001100
010000110
001000011
000101001
000011010
 
et je doit prendre certaine ligne et les additionner modulo 2
par exemple je doi prendre la ligne 2 3 et 5
 
ca me donne
 
010000110
001000011
000011010
---------
011011111
 
 
je cherche le moyenne de représenter ca ...

mood
Publicité
Posté le 11-10-2003 à 13:37:29  profilanswer
 

n°536986
Taz
bisounours-codeur
Posté le 11-10-2003 à 13:41:31  profilanswer
 

t'es lourd sérieux. tu fais ta classe Matrice avec un tableau à deux dimensions derrière ou tu t'en trouves une déjà toute faite

n°537002
benou
Posté le 11-10-2003 à 14:04:42  profilanswer
 

ben ouais, un double tableau ...
c'est quoi le problème que tu te poses ?


---------------
ma vie, mon oeuvre - HomePlayer
n°537003
ToxicAveng​er
Posté le 11-10-2003 à 14:05:34  profilanswer
 

tu te fais une classe avec des vector comme ca c'est dimensionnable à souhait [:aloy]
 
ou alors jette un coup d'oeil du coté des hashtable si tu as besoin de manipuler rapidement des enormes quantités de données...

n°537007
benou
Posté le 11-10-2003 à 14:09:51  profilanswer
 

déjà, pas Vector ni HashTable, mais ArrayList et HashMap ...
 
ensuite, utiliser des objets dimmensionable ou des structure avec algo de hashage, faut vraiment en avoir besoin, hein ! C'est nettement moins performant et plus gourmand en mémoire qu'en bête tableau à 2 dimmensions dans la majorité des cas (hors matrice creuses ou joyeuseté dans ce genre ...)


---------------
ma vie, mon oeuvre - HomePlayer
n°537010
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-10-2003 à 14:13:31  profilanswer
 

benou a écrit :

déjà, pas Vector ni HashTable, mais ArrayList et HashMap ...


Tu sais, le rapport de perfos Vector/ArrayList et Hashtable/HashMap est beaucoup moins justifié qu'avant. Autant en 1.2 c'était peut-être un souci, autant en 1.4 ça l'est carrément moins. Je sais pu où j'avais trouvé un comparatif entre les objets synchro et les non-synchro en 1.4 et franchement, niveau perfos ça se valait pratiquement (sauf grosses utilisations de porc, là je dis pas) [:spamafote]
 
EDIT : j'ai retrouvé, en plus c'était une conf à JavaOne :o http://servlet.java.sun.com/javaon [...] s/1522.pdf


Message édité par Taiche le 11-10-2003 à 14:18:54

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°537020
benou
Posté le 11-10-2003 à 14:23:17  profilanswer
 

bha ouais, j'avais loupé cette conf là, elle était en même temps qu'une autre que j'avais jugé plus intéressante :/
 
MAis bon, je vois pas l'intérêt d'utiliser des objets synchronisés si y en a pas besoin ...


---------------
ma vie, mon oeuvre - HomePlayer
n°537023
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-10-2003 à 14:25:15  profilanswer
 

benou a écrit :


MAis bon, je vois pas l'intérêt d'utiliser des objets synchronisés si y en a pas besoin ...


Dans une appli de base, effecivement,  chu d'accord avec toi. Mais dans du code industriel qui peut être réutilisé n'importe où ou n'importe comment, j'aurais tendance à privilégier du synchronized pour éviter d'éventuels problèmes de multi-threading [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°537029
nraynaud
lol
Posté le 11-10-2003 à 14:34:32  profilanswer
 

de toutes façon, de la sunchronisation qui n'est pas planifiée c'est voué à l'échec donc inutile de synchroniser inutilement, c'est donner de fausses illusions.

n°537037
benou
Posté le 11-10-2003 à 14:43:29  profilanswer
 

J'ai lu et c'est intéressant :jap:
 
mais bon, la synchronization a un coup, même si il est faible. Ca veut dire que quand on en a besoin, il ne faut pas hésiter à en mettre, mais que quand on en a pas besoin, c'est quand même dommage d'en mettre ...
 
Y a des tas de gens qui utilisent Vector et HashTable par habitude, dans des casôù il n'y a a vraiment pas besoin de synchro ... c'est quand même dommage :/


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 11-10-2003 à 14:43:29  profilanswer
 

n°537039
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-10-2003 à 14:46:33  profilanswer
 

benou a écrit :

J'ai lu et c'est intéressant :jap:


J'aime bien le dernier slide [:ddr555]

benou a écrit :


mais bon, la synchronization a un coup, même si il est faible. Ca veut dire que quand on en a besoin, il ne faut pas hésiter à en mettre, mais que quand on en a pas besoin, c'est quand même dommage d'en mettre ...
 
Y a des tas de gens qui utilisent Vector et HashTable par habitude, dans des casôù il n'y a a vraiment pas besoin de synchro ... c'est quand même dommage :/


Toutafé. C'est juste que j'ai découvert ce papelard y a pas très longtemps et qu'il fait sauter quelques légendes, donc c'est assez sympa :)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°537040
benou
Posté le 11-10-2003 à 14:47:16  profilanswer
 

nraynaud a écrit :

de toutes façon, de la sunchronisation qui n'est pas planifiée c'est voué à l'échec donc inutile de synchroniser inutilement, c'est donner de fausses illusions.


exactement !!!
 
Combien y en a qui utilise des Vector ou des ArrayList synchronisés en se disant "on sait jamais", et qui pense que ca suffit pour que leur class soit thread-safe ?
A côté de ca ils font des parcours de leur collection sans synchronization sans penser que ca flingue la synchronization de la collection ...
 
bref : ne pas se faire chier avec la synchro tant qu'il n'y en a pas besoin, et le jour où il y en a besoin, la faire correctement, completement et intelligement (pas besoin de foutre du synchronized partout !!).


---------------
ma vie, mon oeuvre - HomePlayer
n°537042
benou
Posté le 11-10-2003 à 14:51:19  profilanswer
 

Taiche a écrit :


J'aime bien le dernier slide [:ddr555]


j'avais pas vu [:rofl]
 

Taiche a écrit :


Toutafé. C'est juste que j'ai découvert ce papelard y a pas très longtemps et qu'il fait sauter quelques légendes, donc c'est assez sympa :)


ouep :)
 
de toute façon, j'ai toujours detesté les mecs qui passaient par ce genre de bricolage pour gagner 3 millisecondes ...
C'est autant de temps perdu qui aurait pu être passé à mettr een place un design propre qui aurait surement fait gangner bien plus en perf !


---------------
ma vie, mon oeuvre - HomePlayer
n°537114
BifaceMcLe​OD
The HighGlandeur
Posté le 11-10-2003 à 16:47:55  profilanswer
 

Taiche a écrit :


Dans une appli de base, effecivement,  chu d'accord avec toi. Mais dans du code industriel qui peut être réutilisé n'importe où ou n'importe comment, j'aurais tendance à privilégier du synchronized pour éviter d'éventuels problèmes de multi-threading [:spamafote]


Non. Pour faire du code totalement réutilisable, tu fais une classe non synchronisée, et tu indiques quelle factory utiliser pour la rendre synchronisée, genre Collections.synchronizedList() ou Collections.synchronizedMap(). Et au passage, tu peux aussi fournir une seconde factory qui rend ta collection read-only (genre Collections.unmodifiableList() ou Collections.unmodifiableMap())...
Normalement, le caractère synchronisé de la collection ne fait pas partie de l'algorithme qui code son fonctionnement.

n°537226
benou
Posté le 11-10-2003 à 19:48:24  profilanswer
 

c'est pas toujours si simple que ca ...


---------------
ma vie, mon oeuvre - HomePlayer
n°537277
ToxicAveng​er
Posté le 11-10-2003 à 20:42:06  profilanswer
 

... mais parfois si

n°537535
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-10-2003 à 13:06:30  profilanswer
 

BifaceMcLeOD a écrit :


Non. Pour faire du code totalement réutilisable, tu fais une classe non synchronisée, et tu indiques quelle factory utiliser pour la rendre synchronisée, genre Collections.synchronizedList() ou Collections.synchronizedMap(). Et au passage, tu peux aussi fournir une seconde factory qui rend ta collection read-only (genre Collections.unmodifiableList() ou Collections.unmodifiableMap())...
Normalement, le caractère synchronisé de la collection ne fait pas partie de l'algorithme qui code son fonctionnement.


Toi, t'as pas vu la gueule du code qui circule dans ma boîte, alors [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°537953
BifaceMcLe​OD
The HighGlandeur
Posté le 13-10-2003 à 10:49:50  profilanswer
 

Taiche a écrit :


Toi, t'as pas vu la gueule du code qui circule dans ma boîte, alors [:ddr555]


Ben non, mais je connais le code qui circule autour de moi...[:ddr555]
 
Mais comme dit le proverbe "Charité bien ordonnée..." ; donc ce n'est pas parce que le code dans lequel tu dois plonger est crade, que tu dois toi-même programmer crade (même si faire coexister du code propre et du code crade nécessite parfois quelques compromis  :ange: ).
 
benou> Mon expérience m'a montré que les seuls véritables gros problèmes qu'on rencontrait en tant que programmeur face à ce type de design étaient d'ordre... psychologique ! Beaucoup de chefs croient que c'est inefficace, parce que quand on leur présente, ça fait "pur et dur" (d'autres disent "universitaire", ce qui à leurs yeux n'est pas beaucoup mieux...  :sarcastic: ).
Mais il faut savoir ce qu'on veut : du code spaghettisant, ou du code dont la réutilisabilité est maximisée ?


Message édité par BifaceMcLeOD le 13-10-2003 à 10:56:05
n°537958
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-10-2003 à 10:56:02  profilanswer
 

BifaceMcLeOD a écrit :


Ben non, mais je connais le code qui circule autour de moi...[:ddr555]
 
Mais comme dit le proverbe "Charité bien ordonnée..." ; donc ce n'est pas parce que le code dans lequel tu dois plonger est crade, que tu dois toi-même programmer crade (même si faire coexister du code propre et du code crade nécessite parfois quelques compromis  :ange: ).


Vi, m'enfin pour la synchro, je savais pas que l'utiliser dans une fonction "pour le cas où" pouvait se révéler totalement inutile comme le dit nraynaud. Je pensais que c'était une sûreté facile à mettre en place pour éviter les accès concurrents en multi-threads [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°538131
benou
Posté le 13-10-2003 à 13:38:03  profilanswer
 

BifaceMcLeOD a écrit :

benou> Mon expérience m'a montré que les seuls véritables gros problèmes qu'on rencontrait en tant que programmeur face à ce type de design étaient d'ordre... psychologique !


moi ce que je dis c'est que ce design ne fonctionne pas toujours voir même rarement : c'est souvent au sein d'une classe que la généricitée doit être gérée alors que ta solution ne permet que de synchroniser son interface publique. C'est parfois sufisant (exemple des classes de java.util), mais souvent ca ne l'est pas ...


---------------
ma vie, mon oeuvre - HomePlayer
n°538351
BifaceMcLe​OD
The HighGlandeur
Posté le 13-10-2003 à 16:07:07  profilanswer
 

benou a écrit :


moi ce que je dis c'est que ce design ne fonctionne pas toujours voir même rarement : c'est souvent au sein d'une classe que la généricitée doit être gérée alors que ta solution ne permet que de synchroniser son interface publique. C'est parfois sufisant (exemple des classes de java.util), mais souvent ca ne l'est pas ...


Tout dépend de quoi on parle. Comme tu le dis très bien toi-même, il y a d'une part la question de déclarer synchronisées ou non certaines méthodes d'une interface publique, et d'autre part la question, pour une implémentation donnée, de synchroniser certains des composants qu'elle manipule.
 
Ma réponse précédente ne portait évidemment que sur le premier cas. Et je persiste : quand on parle de définir des collections, ou de manière plus générale de composants relativement élémentaires, alors on ne devrait pas avoir trop besoin de spécifier une quelconque synchronisation dans leur interface (sauf bien sûr dans le cas de composants gérant le parallélisme, genre pools de threads, sémaphores, etc...).  
 
Mais évidemment, quand on écrit du logiciel, il y a toujours un moment où il faut agréger les composants de base et fabriquer un composant de plus haut niveau, qui lui devra gérer la synchronisation en manipulant ses sous-objets : c'est le deuxième cas.
 
Mais dans ce 2ème cas -- sauf cas rares -- le fait de synchroniser l'utilisation de certains composants internes de ta classe ne devrait pas avoir d'impact sur l'interface de cette classe. Parmi les cas rares, il y a typiquement la cas du singleton.
 
Cei dit, si je ne m'abuse, dans le topic, la question ne portait que sur le sujet de déclarer ou non synchronisées les méthodes de l'interface publique.


Message édité par BifaceMcLeOD le 13-10-2003 à 16:09:32
n°539011
souk
Tourist
Posté le 14-10-2003 à 10:28:28  profilanswer
 

certes le topic a quelques peu devie, mais je reviens sur la representation de matrices:
 
sur la mailing list "The Java Specialists" (liens dans la FAQ et ci dessous) on trouve qu'il ne faut pas faire de tableau a deux dimensions ou plus, les tableaux etant des objets en java et necessitant relativement beaucoup de resources. Ainsi, pour une matrice de taille n,m il est recommande de faire un tableau a une dimension de taille n*m et de calculer l'index a la main (ca va, pas trop fatiguant ca) plutot que de faire un tableau de tableau
 
Le lien => The Java Specialists newsletter n'70


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
n°539375
BifaceMcLe​OD
The HighGlandeur
Posté le 14-10-2003 à 15:57:43  profilanswer
 

souk a écrit :

certes le topic a quelques peu devie, mais je reviens sur la representation de matrices:
 
sur la mailing list "The Java Specialists" (liens dans la FAQ et ci dessous) on trouve qu'il ne faut pas faire de tableau a deux dimensions ou plus, les tableaux etant des objets en java et necessitant relativement beaucoup de resources. Ainsi, pour une matrice de taille n,m il est recommande de faire un tableau a une dimension de taille n*m et de calculer l'index a la main (ca va, pas trop fatiguant ca) plutot que de faire un tableau de tableau
 
Le lien => The Java Specialists newsletter n'70


C'est pas fatigant, mais c'est délicat. Pour avoir écrit des classes templates TwoDArray et ThreeDArray en C++, je sais qu'il faut faire très attention en &écrivant les indices.
 
D'un autre côté, une fois que c'est bien encapsulé et bien testé, c'est que du bonheur ! :D

n°539418
benou
Posté le 14-10-2003 à 16:34:40  profilanswer
 

BifaceMcLeOD a écrit :


faut faire très attention en écrivant les indices.


 :heink:  
 
int idx = line * columnNumber + column [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°540191
BifaceMcLe​OD
The HighGlandeur
Posté le 15-10-2003 à 12:18:20  profilanswer
 

La notion de ligne et de colonne est toute relative. Quand tu multiplie un vecteur par une matrice, par exemple, tu peux choisir d'écrire ton vecteur en ligne ou en colonne. C'est purement conventionnel, l'un et l'autre sont corrects. Le tout est de choisir l'une des 2 conventions, de s'y tenir, et d'avoir ensuite une écriture du code cohérente, c'est tout.

n°540211
nraynaud
lol
Posté le 15-10-2003 à 12:32:16  profilanswer
 

ah on me signale dans mon oreillette qu'en objet on peut faire cohabiter à moindre coût ces 2 représentations pour les matrices et pour des vecteurs de scalaires, la distinction n'a pas de sens.

n°540339
benou
Posté le 15-10-2003 à 14:11:53  profilanswer
 

BifaceMcLeOD a écrit :

La notion de ligne et de colonne est toute relative.


merci je sais bien, c'était juste un exemple pour montrer que ca avait rien de complexe ...


---------------
ma vie, mon oeuvre - HomePlayer
n°541187
BifaceMcLe​OD
The HighGlandeur
Posté le 16-10-2003 à 11:28:35  profilanswer
 

Je n'ai pas dit que c'était complexe (ou compliqué), j'ai dit que c'était délicat. Il faut réfléchir un peu, c'est tout.
 
nraynaud> Top crédibilité ! :D

mood
Publicité
Posté le   profilanswer
 


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

  Le meilleur moyen de représenter des matrices en java

 

Sujets relatifs
Le meilleur moyen de lire / écrire dans un fichier en java[java] un bon livre pour faire de la programation java
[JAVA] PopupMenu sur un TextArea : cacher le popup windows[Java] Plusieurs versions de JVM installées : problème
[Java] faire tourner une appli 1.4.1 sur Mac OS 9.x[java] aide pour structurer une fonction
[APPLET] Intégrer un éditeur HTML opensource Java[JAVA] Intercepter le retour d'un prog lancé en ligne de commande
Plus de sujets relatifs à : Le meilleur moyen de représenter des matrices en java


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