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

Java Discussion :

Ordonner position d'un système clef valeur


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Ordonner position d'un système clef valeur
    Bonjour à tous,

    J'ai un système clef -> valeur, que l'utilisateur peux ordonner, ex il veut voir un position avant une autre.

    Ca donnerai donc ceci :
    List = [["Name1"=>"Position1"],["Name2"=>"Position2"],["Name3"=>"Position3"],...];
    Après action de l'utilisateur :
    List = [["Name2"=>"Position2"],["Name1"=>"Position1"],["Name3"=>"Position3"],...];

    La position du système clef valeur a donc de l'importance, mais également la clef (Name1, Name, etc.) car c'est à partir de celle-ci que le système sait quel position il doit appliquer.

    Pour l'instant j'utilise un hashmap qui contient donc notre système clef valeur, et une list qui contient l'ordre des clefs.
    Je me demande donc si il n'existe déjà pas un classe qui fait ce travail la...

    Merci d'avance pour votre aide!

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    tu peux créer un objet comparateur en implémentant l'interface comparator et ensuite, le passer en argument à des méthodes de tri comme Collection.sort();

    http://docs.oracle.com/javase/7/docs....Comparator%29

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hum, je vois pas ce qu'on gagne à maintenir un système de comparaison à côté, plutôt que maintenir une List des clés à côté. La List me semble plus claire.

    Il n'y a pas de Collection fournie avec Java qui fasse ce qui est demandé. Le plus proche est LinkedHashSet, qui maintient un ordre bien défini, mais cet ordre ne peut pas être modifié à la demande, il est juste le mêm que l'ordre dans lequel les données ont été insérées.
    Il existe peut-être une bibliothèque tierce qui fait quelque chose comme ça, mais ça ne me semble pas utile. Au bout du compte, pour gérer un ordre de ce genre on est bien obligé de traiter avec une List ou similaire qui reflète l'ordre, je vois donc pas l'intérêt d'utiliser autre chose qu'une List à côté de la Map.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci plawyx pour ta réponse,

    mais je doute que ceci m'aidera.
    En effet, la clef associée à une valeur ne peut pas changer, je ne vois donc pas comment implémenter l'interface Comparator pour que celle-ci me fournisse l'ordre dans lequel l'utilisateur a décidé d'organiser sa liste.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Hum, je vois pas ce qu'on gagne à maintenir un système de comparaison à côté, plutôt que maintenir une List des clés à côté. La List me semble plus claire.

    Il n'y a pas de Collection fournie avec Java qui fasse ce qui est demandé. Le plus proche est LinkedHashSet, qui maintient un ordre bien défini, mais cet ordre ne peut pas être modifié à la demande, il est juste le mêm que l'ordre dans lequel les données ont été insérées.
    Il existe peut-être une bibliothèque tierce qui fait quelque chose comme ça, mais ça ne me semble pas utile. Au bout du compte, pour gérer un ordre de ce genre on est bien obligé de traiter avec une List ou similaire qui reflète l'ordre, je vois donc pas l'intérêt d'utiliser autre chose qu'une List à côté de la Map.
    Merci,
    je suis également arrivé à la même conclusion. Je voulais juste savoir si par mégarde j'avais pu passer outre une classe existante

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut
    Si je comprends bien , tu mets dans une List une multitude de HashMap qui contiennent seulement une pair clé-valeur ??

    Si c'est bien ça , c'est une mauvaise conception. Dans ce cas il vaut mieux utiliser un simple objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class MonObjet {
    private String nom;
    private String value;
    //getter setter
    }
    Ensuite ta liste va contenir tous les objets que tu auras instanciés et il sera facile d'utiliser un comparateur pour trier cette liste.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/02/2008, 14h32
  2. [Création Map clef / valeur]
    Par newbies-java dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/09/2007, 09h37
  3. position de pixel d'une valeur donnée
    Par zappa37 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 07/03/2007, 08h26
  4. Réponses: 2
    Dernier message: 14/07/2006, 18h37
  5. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42

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