IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Implementation d'une matrice +sieurs valeurs


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Par défaut Implementation d'une matrice +sieurs valeurs
    Bonjour;

    Je cherche une structure pour implementer une matrice dont les lignes et les colonnes sont eux mêmes des valeurs.
    Example :

    Date1 date2 date3 date3 date4 date5 ...
    12 v1 v2 v3 v4 v5 v6
    1 ....................................................
    3 ....................................................
    7 ....................................................
    130 ....................................................
    ...

    Ou Vi sont des valeurs (par exemple des entiers).
    Je dois faire des recherche du stype : TrouveLigne(12) renvoi la ligne égale à la valeur 12 (v1, v2, etc..)

    Merci

  2. #2
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Un object[][] ???

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Par défaut
    Citation Envoyé par moritan
    Un object[][] ???

    Bonjour;

    pourquoi un objet [][] ? attention ce n'est pas une matrice T[i, j] ?
    J'ai une ligne (i) et des colonnes (j) avec des valeurs (pas des indexes) et pour chacune d'elles (intersection) j'ai une troisème valeur.

    Merci

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Bonjour,
    Quelles sont les recherches possibles sur cette structure de donnés ? trouveLigne() ? trouveColonne() ? trouveCase() ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Par défaut
    Citation Envoyé par herve91
    Bonjour,
    Quelles sont les recherches possibles sur cette structure de donnés ? trouveLigne() ? trouveColonne() ? trouveCase() ?
    Bonjour;

    Exactement, j'ai en entrée une valeur et je dois la rechercher dans la ligne , si elle existe je renvoi toute la ligne. Même recherche sur la colonne je renvoi toute la colonne et même pour la case.
    et je cherche un bon design pour cette structure ?


    Merci

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Ca ne serait pas pour faire un guide TV par hasard?

    Si c'est ça, je conseillerais de ne stocker qu'un seul "sens" du tableau (par exemple une liste par chaine, et dans cette liste, chaque émission avec ses heures, dans l'ordre).
    Evidemment, le parcours dans l'autre sens peut être coûteux (même si tu peux l'optimiser en découpant les listes "par jour" en plus de "par heure").

    Sinon tu fais un "modèle relationnel" en objet...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Par défaut
    Bonjour;


    Je souhaite revenir sur ce sujet : j'ai implementé la soution de Eulbobo qui semblait la plus simple :

    1- Une map pour référencer à partir des dates tous les elements qui correspondent en colonne (une map date/map d'element indexés sur le nombre)
    2- Une map pour référencer à partir des nombres tous les elements qui correspondent en ligne (une map nombre/map d'element indexés sur la date)

    Mais j'ai des trop pb de performance pour le remplissage de la matrice.
    Quelqu'un aurait'il une autre idée ?

    Merci



    Citation Envoyé par yanis97
    Bonjour;

    Je cherche une structure pour implementer une matrice dont les lignes et les colonnes sont eux mêmes des valeurs.
    Example :

    Date1 date2 date3 date3 date4 date5 ...
    12 v1 v2 v3 v4 v5 v6
    1 ....................................................
    3 ....................................................
    7 ....................................................
    130 ....................................................
    ...

    Ou Vi sont des valeurs (par exemple des entiers).
    Je dois faire des recherche du stype : TrouveLigne(12) renvoi la ligne égale à la valeur 12 (v1, v2, etc..)

    Merci

  8. #8
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Si ton tableau est de taille fixe, la solution la plus rapide serait de l'implémenter comme un tableau à 2 dimensions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] tab = new Object[nbLignes][nbColonnes];
    Ensuite, tu prévois deux map pour faire la correspondance Date -> indice colonne, Integer -> indice ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Map dateToColonne = new HashMap();
    dateToColonne.put(..., ...);
     
    Map integerToLigne = new HashMap();
    integerToLigne.put(..., ...);
    Ensuite, pour accéder à une ligne donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Integer indiceLigne = (Integer) integerToLigne.get(...);
    Object[] ligne = tab[indiceLigne.intValue()];
    et à une case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Integer indiceLigne = (Integer) integerToLigne.get(...);
    Integer indiceColonne = (Integer) dateToColonne.get(...);
    Object[] ligne = tab[indiceLigne.intValue()][indiceColonne.intValue()];
    Reste que l'accès en colonne pose problème, à moins de prévoir un second tableau organisé en colonne/ligne.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Par défaut
    Salut;

    Pour la taille, la matrice je la remplie à partir de data, par contre pour le moment j'ai besoin de récupérer juste la ligne qui match un nbre :

    En entrée comme parametre j'ai un nbre (entier), je parcours la première colonne qui contient les Nbres et si je le trouve je renvoi toute la ligne.
    Pour la première ligne qui contient les dates je la récupére comme elle est (pas de recherche).

    Merci;

    Citation Envoyé par herve91
    Si ton tableau est de taille fixe, la solution la plus rapide serait de l'implémenter comme un tableau à 2 dimensions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] tab = new Object[nbLignes][nbColonnes];
    Ensuite, tu prévois deux map pour faire la correspondance Date -> indice colonne, Integer -> indice ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Map dateToColonne = new HashMap();
    dateToColonne.put(..., ...);
     
    Map integerToLigne = new HashMap();
    integerToLigne.put(..., ...);
    Ensuite, pour accéder à une ligne donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Integer indiceLigne = (Integer) integerToLigne.get(...);
    Object[] ligne = tab[indiceLigne.intValue()];
    et à une case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Integer indiceLigne = (Integer) integerToLigne.get(...);
    Integer indiceColonne = (Integer) dateToColonne.get(...);
    Object[] ligne = tab[indiceLigne.intValue()][indiceColonne.intValue()];
    Reste que l'accès en colonne pose problème, à moins de prévoir un second tableau organisé en colonne/ligne.

Discussions similaires

  1. Concaténer des cellules de strings avec une matrice de valeurs
    Par procrastination dans le forum MATLAB
    Réponses: 3
    Dernier message: 16/10/2014, 13h25
  2. Récupérer une matrice si valeur dans feuille
    Par silenk dans le forum Excel
    Réponses: 1
    Dernier message: 12/06/2013, 16h00
  3. code pour le calcul d'une matrice de valeur
    Par sihamus87 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/05/2011, 16h23
  4. Réponses: 1
    Dernier message: 30/10/2009, 09h48
  5. valeurs propres d'une matrice et vecteurs propres
    Par la_fantomas dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/05/2005, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo