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

Collection et Stream Java Discussion :

Un élément au hasard dans les clés d'un HashMap


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut Un élément au hasard dans les clés d'un HashMap
    Bonjour à tous,

    Pourrait-on m'indiquer comment procéder efficacement pour obtenir une clé au hasard dans celles d'un HashMap? Ou de manière générale, un élement dans un ensemble puisqu'on peut obtenir les clés sous cette forme avec keyset().

    Merci d'avance,

    G.

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Points : 97
    Points
    97
    Par défaut
    Bonsoir,
    avec ton keySet() tu récupéré une set de clés de ta hashmap, donc pour récupérer une clé au hasard il suffit de lancer un random modulo size de la set récupéré.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut Un élément au hasard dans les clés d'un HashMap
    Bonjour,

    Citation Envoyé par mouddene Voir le message
    Bonsoir,
    pour récupérer une clé au hasard il suffit de lancer un random modulo size de la set récupéré.
    J'avais bien compris le principe, mais comme il s'agit d'un ensemble, si je ne me trompe pas, on n'accède pas à ses éléments par un index. Donc pour pouvoir le faire, je ne vois que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String[] keys = h.keyset().toArray();
    int i = (int) ((double) Math.random() * keys.length);
    String randomKey = keys[i];
    Est-ce qu'il n'y a pas une méthode pré-existante plus concise ?

    G.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Créer un keyset est déjà consommateur en soit.

    Pour ne pas passer par un array, tu peux passer par un iterateur et t'arrêter quand tu atteinds l'élément voulu.

    Mais je recommande d'utiliser l'entreyset, moins consommateur.

    Aussi, tu aura toujours des problèmes de perfs sur les grosses maps, il vaudra mieux là utiliser une map permettant l'accès par index.

  5. #5
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour

    Tu peux utiliser ListOrderedMap de l'API collections d'apache commons.

    Voir la méthode get(int).

    Pour avoir un élément au hasard il suffit d'utiliser java.util.Random.


    Yann

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 87
    Points
    87
    Par défaut
    Merci à tous

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

Discussions similaires

  1. [Débutant] Récupérer les valeurs et les clés d'une HashMap
    Par Mobistar dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 29/10/2014, 00h01
  2. Choisir un élément au hasard dans un tableau
    Par contre dans le forum Pascal
    Réponses: 5
    Dernier message: 23/05/2012, 21h55
  3. Recherche d'une String dans les valeurs d'une HashMap
    Par 4rocky4 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 04/05/2011, 15h24
  4. Réponses: 2
    Dernier message: 04/05/2007, 10h55
  5. Les trous dans les clés primaires d'une base de données ?
    Par dymezac dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 27/09/2006, 09h22

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