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 :

Tri d'un vecteur.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 203
    Billets dans le blog
    1
    Par défaut Tri d'un vecteur.
    Bonjour,

    J'ai une question pour Java. Tout d'abord, j'utilise Netbeans 6.5 comme un outil IDE.

    J'ai une structure d'un fichier texte:
    L'enregistrement comporte:
    - Téléphone sur 13 positions de type caratère.
    - Services: 1 ou 0 (1 avec un service, 0 sans service).
    - Nom et prénom sur 40 caractères.

    Donc, j'ai fait une procédure qui permet de lire les enregistrements et les remplir dans un vecteur. Ma question, comment trier les éléments d'un vecteur uniquement par le téléphone ?.

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    il faudra plus expliquer ton problème

    si tu as une seule classe qui a comme attributs
    - Téléphone
    - Services
    - Nom et prénom

    alors tu devras d'abord implémenter l'interface Comparable, et redéfinir la méthode compareTo, et à l'intérieur de cette méthode tu fais la comparaison qui te conviens,

    par exp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Personne implements Comparable<Personne>
    {
    	String telephone, nom;
    	int service;
    	...
    	public int compareTo(Personne p)
    	{
    		return telephone.compareTo(p.telephone);
    	}
    	...
    }
    ensuite, tu utilises la méthode Collections.sort(..) et tu lui passes ton Vector.

    A noter que la comparaison des objets lors du tri fait appel à la méthode compareTo, c'est pour cela qu'il faut la redéfinir, et puisqu'on fait dedans la comparaison entre les téléphones, le tri se fera par téléphone

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 203
    Billets dans le blog
    1
    Par défaut
    Je m'explique:

    J'ai remplis le vecteur avec les enregistrements du fichier ligne par ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int NbrLignes=0;  // Nombre d'enregistrement dans le fichier
             while ((sLigne = FichierEntree.readLine())!= null)
             {
                  MonVecteur.addElement(sLigne);
                  System.out.println(sLigne);
                  NbrLignes++;
             }
    FichierEntree est le fichier paramétré (texte). NbrLignes est le nombre d'enregistrement.

    Ensuite, j'ai fait une soustraction du tel avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (int i=0;i<MonVecteur.size();i++)
            {
                String chaine1,Telephone;
                chaine1=""; 
                // Chaine 1 contient les éléments d'un vecteur
                chaine1 = MonVecteur.elementAt(i).toString();
                Telephone=chaine1.substring(0,chaine1.indexOf(' '));
     
            }
    Maintenant, j'ai le tel sous forme de chaine de caractère. Je ne veux pas utiliser les classes vu que je suis débutant.

    Il y a une focntion CompareTo pour les chaines de caractère, mais je ne sais comment l'utiliser pour pouvoir trier les éléments de mon vecteur.

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut

    Citation Envoyé par dahmane2007 Voir le message
    Je ne veux pas utiliser les classes vu que je suis débutant.
    Tu ne veux pas ou tu ne peux pas?
    C'est dommage de se limiter comme ça...


    Citation Envoyé par dahmane2007 Voir le message
    Il y a une focntion CompareTo pour les chaines de caractère, mais je ne sais comment l'utiliser pour pouvoir trier les éléments de mon vecteur.
    CompareTo te permet de comparer deux éléments l'un par rapport à l'autre.
    Si tu ne veux pas utiliser les classes (et donc implémenter l'interface), je pense qu'il va te falloir faire ta procédure de tri toi-même à partir du compareTo de la classe String. Fais une recherche sur les algos de tris (tri à bulle, quick sort, ...) pour trouver ton bonheur.


    [edit] petite manip un peu tordue...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Object[] elements=MonVecteur.toArray();
    Arrays.sort(elements);
    et tu récupères dans elements ton Vector ordonné. Il ne reste plus qu'à faire les extractions des numéros de téléphone sur chaque élément ensuite, en supposant que le tri se fait comme tu le souhaites. Sinon faudra mettre les mains dans le cambouis
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    tu peux toujours utiliser Collections.sort sur ton vector, puisque le téléphone se trouve le premier à chaque ligne, donc, lors de la comparaison, c'est les téléphones qui seront comparés en premier, puisqu'il s'agit d'une comparaison lexicographique caractère par caractère, et seulement s'ils se ressemblent, ça passera aux autres éléments, et puisqu'il n'y a pas deux téléphones identiques, le tri ce fera tjrs sur le téléphone

  6. #6
    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

Discussions similaires

  1. Petits soucis de tri sur un vecteur
    Par d.jphilippe dans le forum Fortran
    Réponses: 3
    Dernier message: 01/08/2008, 23h00
  2. Tri d'un vecteur
    Par dv-2008 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 30/05/2008, 21h39
  3. Tri Tableau Matrice vecteur
    Par french_aspi dans le forum MATLAB
    Réponses: 9
    Dernier message: 24/03/2008, 14h50
  4. Tri spécial et vecteurs
    Par vinzzzz dans le forum C
    Réponses: 6
    Dernier message: 21/11/2007, 18h47
  5. Tri d'un vecteur
    Par killer75 dans le forum C++
    Réponses: 22
    Dernier message: 30/01/2007, 19h14

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