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

avec Java Discussion :

Associer plusieurs valeurs à un même élément


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Associer plusieurs valeurs à un même élément
    Bonjour à tous,

    J'ai un besoin un peu particulier et je ne sais pas trop comment l'aborder.

    Imaginons une classe A avec différents types :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class A
    {
    	public enum Types {
    		AUTO(0), MANU(1), SEMI(2);
    		//Suite de l'énum
    	};
    }
    Ces types correspondent à un champs dans une base de données, d'où l'attribution d'un entier.

    Une application tierce (non java) m'envoie une valeur. Cette valeur correspond à un des types. Cependant plusieurs valeurs peuvent correspondre à un même type.

    Par exemple les valeur de 0 à 125 correspondent au mode AUTO ,126 à 322 correspondent à MANU et 217 uniquement correspond à SEMI. Cela permet en principe d'associer au mode un chiffre. Si je reçois 10 , je sais par exemple que je suis en mode AUTO n° 11 alors que 127 correspond au mode MANU 2.

    Je souhaiterais donc dans ma classe ajouter une méthode findTypeByValue(int value) me permettant de retrouver un type (enum) en fonction de la valeur reçue. Avant de me lancer dans un ensemble de if/else if imbuvable , existe-il une solution plus élégante au problème ?

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Par défaut
    Tu peux commencer par faire des if/else sur des intervalles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    findTypeByValue(int value) {
       if (value>=0 && value<=125) {//AUTO}
       else if ((value>=126 && value<=322) && value != 217){}//MANU sauf 217
       else if (value==217){//SEMI}
       else {//valeur non gérée}
    }

  3. #3
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Salut, si la valeur maximale est connue et pas trop importante, tu peux également créer un tableau static d'une longueur équivalent à la valeur max, et ensuite tu rempli le tableau avec les valeurs de l'enum. (dans un bloc static afin de le faire une seule fois pour chaque instance de la classe)
    Comme ça pour accéder à une valeur il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Types findTypeByValue(int value) {
       return valuesTable[value];
    }
    Cette méthode sera plus couteuse en mémoire mais plus rapide d'accès. A toi de choisir suivant le contexte.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par CheryBen Voir le message
    Salut, si la valeur maximale est connue et pas trop importante, tu peux également créer un tableau static d'une longueur équivalent à la valeur max, et ensuite tu rempli le tableau avec les valeurs de l'enum. (dans un bloc static afin de le faire une seule fois pour chaque instance de la classe)
    Comme ça pour accéder à une valeur il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Types findTypeByValue(int value) {
       return valuesTable[value];
    }
    Cette méthode sera plus couteuse en mémoire mais plus rapide d'accès. A toi de choisir suivant le contexte.
    La valeur max est connue mais va de 0 à 1500 donc pour le coup je me voit pas bien remplir un tableau à la mimine
    je vais me rabattre sur un ensemble de test sur les intervals.

    merci pour vos réponses
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Tu peux aussi remplir automatiquement un fichier avec les valeurs en texte, puis charger le contenu de ce fichier au démarrage. Du coup tu peux même aller le modifier à la main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Associer plusieurs valeurs pour la même colonne
    Par magiabd dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/05/2011, 11h52
  2. Mapper BPEL Glassfish : ajouter plusieurs valeurs pour un élément.
    Par acromath dans le forum Glassfish et Payara
    Réponses: 0
    Dernier message: 19/07/2010, 13h04
  3. Réponses: 1
    Dernier message: 19/07/2010, 11h46
  4. Associer plusieurs noms à une même entrée.
    Par bilibou dans le forum Débuter
    Réponses: 4
    Dernier message: 28/05/2008, 14h24
  5. Réponses: 7
    Dernier message: 15/02/2005, 13h55

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