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 :

Trier des donnés en gardant des correspondances


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut Trier des donnés en gardant des correspondances
    Bonsoir,

    Mon titre n'est pas très clair...
    Voilà ce que je voudrais faire :
    J'ai un vector et un tableau:
    Vector validMoves = new Vector(10);
    float[] maxValue = new float[10];

    Le vecteur contient des objects quelconque et le tableau ordonne une valeur à ces objets : à validMoves.get(i) correspond maxValue[i].

    J'aimerai trier le tableau de float mais la correspondance validMoves.get(i) =>maxValue[i] doit toujours valoir.

    En bref, le vecteur doit subir les même inversions que le tableau.

    J'ai bricoler qqch avec le tri par inversion. Ca marche mais j'aimerai utiliser des fonctions de l'API. Est ce possible ?
    Merci

    PS. Je dois pouvoir trier de manière ascendente et descendante.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut
    Ca ne te serait pas possible d'utiliser une Map ? Après reste à savoir laquelle exactement, mais dans le tas il doit bien y en avoir qui soient triables.

    Tu pourrais utiliser les floats comme des clefs, et les objets quelconques comme les valeurs.
    Tu peux toujours chercher dans la javadoc l'interface Map.

  3. #3
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Pour ne pas avoir deux listes, ne serait-il pas plus simple de créer un objet qui regroupe les valeurs 'validMove' et 'maxValue' de chaque élément, puis de créer une liste qui contiendrait tous les éléments ?
    Partant de là, il devient possible de créer tous les Comparator imaginables sans jamais perdre le lien entre 'validMove' et 'maxValue'.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Ok si je la fait avec une classe implémentant Comparable :
    Mais comment fait on pour trier des objets de facon décroissante ?
    J'ai vu la fonction sort dans l'api mais c'est forcément croissant.

    Sinon j'ai vu la classe Attributes (implements Map) qui pourrait convenir mais je ne vois pas comment trier les clefs.

  5. #5
    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
    En implémentant Comparable, tu définiras toi-même ta méthode de tri en renvoyant soit un entier positif, zéro ou un entier positif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public int compareTo(T o) {
        if(_maxValue > o.getMaxValue())
            return 1;
        else if(_maxValue < o.getMaxValue())
            return -1;
        else
            return 0;
    }

  6. #6
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Si tu dois faire des tris différents sur les éléments, utilise plutôt des objets Comparator (un pour chaque tri), avec Comparable tu est limité à un seul type de tri.

    Pour utiliser un comparator il existe les classes java.util.Arrays si les éléments sont rangés dans un tableau ou java.util.Collections si les éléments sont rangés dans une liste.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/02/2014, 11h44
  2. Réponses: 0
    Dernier message: 30/04/2012, 20h49
  3. Réponses: 6
    Dernier message: 22/03/2012, 12h24
  4. Réponses: 6
    Dernier message: 13/12/2010, 20h20
  5. Réponses: 2
    Dernier message: 06/06/2010, 15h15

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