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 :

TreeMap, acceder à une valeur par ordre.


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut TreeMap, acceder à une valeur par ordre.
    Bonjour voila, j'ai l'objet X qui a comme parametre un numéro et un code (entre autre). Je veux les ajouter à une treemap, avec comme clé leur code. Mais je veux aussi qu'ils soient trié selon leur numéro.
    Je fais donc une treemap avec le comparateur qui va bien.
    Mais après, comment puis je recuperer un des objet dans ma map à partire de son numéro ? Comme pour une liste ou un tableau ?
    Je précise, ce n'est que dans certain cas précis que j'ai besoin de faire ceci, je pourrais m'arranger en créant une structure spécial à mes objets, mais bon ca va me compliquer grave la tache alors s'il existe un moyen de recupérer les objets selon leur ordre cela me simplifirait pas mal. ^^

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Pas directement à ma connaissance ...
    Mais tu as toujours le values() pour récupérer la collection des valeurs et ensuite tu peux la parcourir avec un iterator ou la transformer en array ...

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Mh ok. Mais est ce que je peux faire partire un iterateur d'une certaine valeur ?
    Ou il faut que je fasse bouger moi même l'itérateur jusqu'à la valeur qui m'interesse ?

    Ah et désolé pour le mauvais forum ^^

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Bonjour,
    Tu peux aussi utiliser une des collections de Common Collections. Tu devrais trouver quelque chose qui réponde à ton besoin

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Je vais voir ca merci ^^
    Sinon à tout hasard, puis je faire en sorte d'avoir deux clé dans une map ? Mais qu'ils suffisent d'en fournir une seul pour récuperer l'objet ?

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu pourrais à priori t'en sortir avec une classe pour tes objets Cle comme celle là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public class Cle {
      String first;
      String second;
     
      public boolean equals(Object o){
        if (!(o instanceof Cle))
          return false;
        Cle other = (Cle) o;
        if (o.getFirst()==null) {
          if (o.getSecond()==null)
            return (first==null) && (second==null);
          return o.getSecond().equals(second);
        }
        return o.getFirst().equals(first);
      }
     
      public int hashCode(){
        return 0;
      }
    }
    En supposant que quand tu ajoutes une clé/valeur ton instance de Cle contient les deux élements first et second. Ensuite tu peux récupérer la valeur uniquement avec une Cle contenant first ou second au choix.

    Le souci, c'est que comme tu le vois, je suis obligé de forcer le hashCode toujours à 0, car je dois respecter cle1==cle2 -> cle1.hashCode()==cle2.hashCode().

    Du coup, je ne suis pas certain que ça marche, et j'ai de gros doutes sur les perfos ...

Discussions similaires

  1. [VBA]Trier les valeur d une liste par ordre croissant
    Par PierrotKun dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/03/2007, 09h37
  2. afficher une valeur par défault dans la combobox
    Par shadow31 dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2006, 17h25
  3. transmettre une valeur par l'url
    Par Destampy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 07/06/2005, 15h57
  4. [dblookup] afficher une valeur par programmation
    Par let_me_in dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/05/2005, 14h42
  5. [scriplet] affecter une valeur par un bean:write
    Par viena dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 25/11/2004, 16h29

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