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 :

[tableau à 2 dimensions] association String et float


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut [resolu][tableau à 2 dimensions] association String et float
    Bonjour,
    Je voudrais géré un tableau à 2 dimensions, dont la première colonne contient des float et la deuxième contient une chaine de caractere associer.
    Je voudrait ensuite pouvoir trier ce tableau selon les la colonne de float.
    Exist'il une classe qui permet d'instancier un tel tableau? Sinon exist'il une astuce pour faire cela?
    Merci pour votre aide.
    Cordialement.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 63
    Points : 68
    Points
    68
    Par défaut
    Salut, la classe Hashmap permet de faire des associations clés-valeurs (entre objets seulement, il va donc falloir que tu utilises la classe Float et non pas le type float). Pour le tri tu pourras récupérer la liste des clés et les ordonner comme tu le souhaites dans une autre structure.
    a+

  3. #3
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    je connais pas ta problématique mais tu peux utiliser un TreeMap (HashMap triés par Comparable)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    private final TreeSet   array2 = new TreeMap(); // TreeMap de HashMap avec des clés de String;
     
    public void set(float num,String text,Object value)
    {     HashMap hashmap = this.array2.get( new Float(num) );
           if( hashmap == null )
           {   hashmap = new HashMap();
                this.array2.put( new Float(num), hashmap );
           }
     
           hashmap.put( text , value );
    }
     
    public Object get(float num,String text)
    {  HashMap hashmap = this.array2.get( new Float(num) );
        if( hashmap == null ) return null;
     
        return hashmap.get( text );
    }
     
    public Iterator elementsOrderedByFloat()
    {   Iterator result = new Iterator()
         {
             Iterator internal1 = array2.values().iterator();
             Iterator internal2 = rollIterator();
     
             public boolean hasNext()
             { if( internal2 == null) return false;
     
                boolean result= internal2.hasNext();
                if(!result)
                { this.internal2 = rollIterator();
                   return hasNext();
                } 
              }
     
             public Object next() 
             { if(this.internal2 == null) return null; /* ca ne doit pas arriver */
                return this.internal2.next();
             }
     
             public void remove()  { /* not supported */ }
     
             private Iterator rollIterator()
             { Iterator result = null;
                while( internal1.hasNext() )
                {  HashMap map = (HashMap)internal1.next();
                    if(map.getSize() > 0)   
                    {  result = map.values().iterator(); }
                } 
                return result;
              } 
         };
         return result;
    }
    C'est un code d'exemple, la collection TreeSet trie les elements en fonction de l'implementation de Comparable, donc tout sera triés en fonction des Float.
    Cependant j'ai utilisé dans cet exemple, une HashMap pour la colonne String, ce qui fait que ce n'est pas ensuite triés par String, ni même par l'ordre d'insertion, en fait les String pour un même float sont completement desordonés !! si tu veux triés a l'interieur des clés float les clés String, utilise aussi un TreeMap;

    PS: je ne sais pas si ce code COMPILE je l'ai ecrit directement sur le forum.
    JBusyComponent, une API pour rendre occupé un composant swing.
    SCJP Java 6.0 (90% pass score)

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses, je me plonge dedans.

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

Discussions similaires

  1. transformer un tableau de char en string puis en float?
    Par maf.mouton dans le forum Débuter
    Réponses: 8
    Dernier message: 30/04/2009, 13h34
  2. Tableau à 3 dimensions avec données string & numériques
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/02/2009, 11h33
  3. Tableau à n dimensions
    Par youb dans le forum MFC
    Réponses: 10
    Dernier message: 13/05/2004, 14h13
  4. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50
  5. Réponses: 23
    Dernier message: 21/08/2003, 07h16

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