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

Langage Java Discussion :

Quelle Structure utiliser pour un tri croissant


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Quelle Structure utiliser pour un tri croissant
    Bonjour,
    j'ai un petit problème pour organiser et trier des données, j'explique mon problème j'ai une liste de mots qui sont chacun associés à 3 valeurs int.

    Donc il me faudrait un conteneur qui puisse contenir 1 String et 3 ints comme ceci:

    {{String,int,int,int},{String,int,int,int},{String,int,int,int},{String,int,int,int}}

    donc déjà quelle data structure faut il utiliser une ArrayList[][] irait ?? Ensuite je voudrais trier ce tableau dans un ordre décroissant pour la valeur mis en vert (le second entier).

    Pour donner un petit exemple j'ai disons ces données:

    1. camion , 34 , 14 , 89
    2. avion , 21 , 42 , 134
    3. voiture , 109, 30 , 14

    Et je veux que cela sorte ainsi:

    1. camion , 34 , 54 , 89
    2. avion , 21 , 42 , 134
    3. voiture , 109, 30 , 14

    Donc quel structure utiliser et es que cette structure de donnée permet de faire ce trie sans réinventer la roue ? Merci pour vos conseils et votre aide.

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Pourquoi tu ne fais pas une classe qui contiendrait cette String et ces 3 int ?
    C'est quand même plus simple.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Oui et surtout c'est le fondement même d'un développement structuré. Il faut que tu créé une classe contenant ces 4 valeurs et que tu lui fasses étendre Comparator. Ensuite dans la méthode compareTo(), tu fais une comparaison de l'entier que tu veux comparer. Pour finir, une classe du type TreeList te fera automatiquement le tri.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    ok, merci pour votre aide c'est tout bon :-)

  5. #5
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Tu peux avoir une classe Vehicule de ce style:
    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
    public class Vehicule implements Comparable<Vehicule> {
     
       private String nom;
       private int valeurA;
       private int valeurB;
       private int valeurC;
     
       public Vehicule(String n, int a, int b, int c) {
          nom = n;
          valeurA = a;
          valeurB = b;
          valeurC = c;
       }
     
       /* (non-Javadoc)
        * @see java.lang.Comparable#compareTo(java.lang.Object)
        */
       @Override
       public int compareTo(Vehicule o) {
          return this.valeurB - o.valeurB;
       }
     
       public String getNom() {
          return nom;
       }
     
       public int getValeurA() {
          return valeurA;
       }
     
       public int getValeurB() {
          return valeurB;
       }
     
       public int getValeurC() {
          return valeurC;
       }
     
    }
    Ensuite tu peux trier ta liste comme ceci
    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
       public static void main(String args[]) {
          Vehicule v1 = new Vehicule("un", 2, 1, 4);
          Vehicule v2 = new Vehicule("deux", 2, 2, 4);
          Vehicule v3 = new Vehicule("trois", 2, 3, 4);
          List<Vehicule> lst = new ArrayList<Vehicule>();
     
          /* On ajoute les véhicules dans le désordre */
          lst.add(v2);
          lst.add(v1);
          lst.add(v3);
     
          /* On affiche les véhicules de la liste */
          System.out.println("Liste non triée");
          for (Vehicule v : lst) {
             System.out.printf("ValeurB de %s : %d\n", v.getNom(), v.getValeurB());
          }
     
          /* On trie la liste */
          Collections.sort(lst);
     
          /* On affiche les véhicules de la liste triée */
          System.out.println("Liste triée");
          for (Vehicule v : lst) {
             System.out.printf("ValeurB de %s : %d\n", v.getNom(), v.getValeurB());
          }
     
       }
    L'appel à Collections.sort() peut se faire en lui passant un objet Comparable ce qui évite d'étendre l'interface dans ta classe Vehicule.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup pour ton aide ca marche super bien et j'ai appris quelque-chose grâce à vous voici le code que j'ai utilisé:

    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
     
     
    import java.util.*;
     
    public class Vehicule implements Comparable<Vehicule>
    {
         String nom;
         int valeurA;
         int valeurB;
         int valeurC;
     
    public Vehicule(String n, int a, int b, int c){
         nom = n ;
         valeurA = a;
         valeurB = b;
         valeurC = c;
                                                    }
     
    public int compareTo(Vehicule o) {
          return this.valeurB - o.valeurB;
       }
     
     
    }
    et

    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
     
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.io.*;
    import java.util.*;
     
     
    public class GetRanks{
     
           public static void main(String[] args) throws Exception {
     
     
               Vehicule[] vehicule = new Vehicule[3];
    		   vehicule[0] = new Vehicule("fwef",3,5,54);
    		   vehicule[1] = new Vehicule("aefe",12,8,6);
    		   vehicule[2] = new Vehicule("aefe",1,3,2);
    		   Arrays.sort(vehicule);
    		   for(int i = 0; i < vehicule.length; i++)
    		   {
    		   System.out.println(vehicule[i].nom);
    			}
     
    	}
     
    }
    Je vais surement passer pour un ignorant mais pourquoi faut-il ajouter un <Vehicule> ?

    public class Vehicule implements Comparable<Vehicule>

  7. #7
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Ravi d'avoir pu aider

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

Discussions similaires

  1. Quelle structure utiliser pour manier ces données
    Par marcelin88 dans le forum Débuter
    Réponses: 8
    Dernier message: 26/03/2014, 15h12
  2. Réponses: 4
    Dernier message: 24/09/2010, 00h13
  3. Réponses: 4
    Dernier message: 02/05/2006, 12h08
  4. Quelle technologie utilisée pour apllication web?
    Par boudou dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 10/04/2006, 17h19
  5. Réponses: 3
    Dernier message: 11/11/2005, 15h52

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