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 :

tri d'un vecteur


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut tri d'un vecteur
    Voici le code d'un programme qui définit une classe dont deux des données sont une valeur et l'autre la frquence de cette valeur,
    la classe principale, après avoir dédinit un vector d'objet de cette classe voudrait en trier les objets selon la frequence

    le compilateur ne reconnait pas la methode sort
    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
     
    import java.io.*;
    import java.util.*;
     
    class Fre implements java.lang.Comparable
    	{
    	private int val;
    	private int fr;
    	Fre(int valf, int frf)
    			{
    			val=valf;
    			fr=frf;
    			}
    	public int getval()  { return val;  }
    	public int getfr()  { return fr;  }
     
    	 public int compareTo( Object other ) {
    	if( this.fr < ((Fre)other).getfr()) return -1;
              if( this.fr == ((Fre)other).getfr()) return 0;
              else return 1;
     }}
    public class Frequence
    	{
    	public static void main(String args[])
    		{
    		Vector<Fre> vf=new Vector<Fre>();
    			for(int i=0; i<2;i++)
    				for(int j=0; j<64;j++)
    					{
    					Fre f = new Fre(i,j);
    					vf.add(j,f);
    					}
    			Arrays.sort(vf);
     		}
    	}
    Pouvez vous m'aider ?
    merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Comme son nom l'indique, Arrays.sort() trie des tableaux.

    Pour trier des collections, il y a Collections.sort(), qui prend en paramètre une List, et il se trouve que Vector implémente List. (Au passage, Vector ça te sert à rien. Ce que tu veux c'est ArrayList, ça au moins ça se voit dans son nom que c'est une List.)

    Petit soucis : Collections.sort() est défini à peu près ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static <T extends Comparable<T>> void sort(List<T>)
    Ça veut dire que Fre doit implémenter Comparable<Fre> et pas juste Comparable.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Par défaut
    Salut ce n'est pas un tableau mais une collection.
    1. Il faut donc utiliser Collections.sort au lieu de Arrays.sort.
    2. Comparable utilise maintenant les generics, je te conseil donc de t'en servir.
    3. Utilise plutôt une List qu'un Vector

    Tu pourras donc obtenir un truc du genre :
    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
    import java.util.*;
     
    class Fre implements Comparable<Fre> { 
    	private int val;
    	private int fr;
     
    	Fre(int valf, int frf) {
    		val=valf;
    		fr=frf;
    	}
     
    	public int getval() {
    		return val;
    	}
     
    	public int getfr() {
    		return fr;
    	}
     
    	public int compareTo(Fre o) {			
    		if( this.fr < o.getfr()) return -1;
    		if( this.fr == o.getfr()) return 0;
    		else return 1;
    	};	
    }
     
    public class Frequence {
    	public static void main(String args[]){
    		List<Fre> vf = new ArrayList<Fre>();
     
    		for(int i=0; i<2;i++){
    			for(int j=0; j<64;j++){
    				Fre f = new Fre(i,j);
    				vf.add(j,f);
    			}
    		}
     
    		Collections.sort(vf);
     	}
    }

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    merci à tous les deux, je ne sais pas ce que sont les générics, je vais me documenter au plus vite, d'autre part je pensais qu'un tableau d'objets était une collection(ça change rien au sujet, tu me dirais).
    merci à nouveau

    Philippe

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par philippe6 Voir le message
    merci à tous les deux, je ne sais pas ce que sont les générics, je vais me documenter au plus vite, d'autre part je pensais qu'un tableau d'objets était une collection(ça change rien au sujet, tu me dirais).
    C'est pas spécialement con de le penser, mais un tableau n'implémente pas l'interface Collection et toutes les méthodes qu'elle déclare.
    Ça aurait pu, au moins en partie, mais non. 'Suffit de le savoir et faire avec.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    Mon problème est résolu, grace à vous, mais je ne peux pas m'empécher de remarquer que java dissuade d'écrire ses propres fonctions, il a les sienne prédéfinies, elles peuvent tout si on les connait, plus de pla ce à l'invention, à à l'algorithmie, mais au bachotage tout azimut, c'est clair je ne saurais pas écrire à la volée de telles fonctions mais c'est un vrai labyrinthe comme ça et pour ce qui est de la javadoc, il n'y a pas d'exemples, c'est d'autant plus ennuyeux !
    Il fallait que je fasse cette remarque !


  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Quand on débute, oui.

    Avec l'expérience c'est le contraire : on commence à comprendre comment la bibliothèque de base est organisée, et on sait assez bien où (et avec quels mots-clés) chercher quelque chose qui pourrait y être.

    Quant à la JavaDoc, c'est l'une des rares documentations qui documentent entièrement les classes, membres et méthodes, au lieu de dire "ça sert à ça. Essayez de jouer avec, en changeant les valeurs des paramètres. Si ça marche sur votre machine, faites comme ça. Jusqu'au prochain patch qui dit que si ça marchait avant, c'est un bug."
    On va pas s'en plaindre, hein.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

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