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 une liste


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Par défaut Trier une liste
    Coucou !
    En fait voici mon code :
    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
    	public int compareTo(Object file) {
    		long nb1 = ((File) file).length();
    		long nb2 = this.getSize();
    		if (nb1 > nb2)
    			return -1;
    		else if (nb2 == nb1)
    			return 0;
    		else
    			return 1;
    	}
     
    	public void Parcourir(File file) {
    		if (file.isDirectory()) {
    			File[] list = file.listFiles();
    			if (list != null) {
    				for (int i = 0; i < list.length; i++) {
    					Parcourir(list[i]);
    				}
    			}
    		} else {
    			if (file.getName().endsWith("pdf")) {
    				liste.add(file);
    			}
    		}
    	}
    Le problème étant que je n'ai pas une liste triée par taille, comme je le veux, quelqu'un aurait-il une explication à ce sujet svp ?
    Ma classe implémente bien "Comparable" O.O

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ta classe doit implémenter Comparable<TonType>, avec un méthode compareTo(TonType o)

    parce que ton code, là, il compare des pommes et de poires: this, avec sa méthode size() et un File, avec sa méthode length(), ce qui au mieux va lancer des exceptions.

    Mais ton comparateur n'est de toutes façons jamais appelé. Il n'y a pas de liste triée en java. Si tu veux trier, après tes insertions, tu dois appeler Collections.sort(list,Comparator<File>), le comparator restant à implémenter.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Par défaut
    Oups pardon, je n'avais pas tout copié lol

    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
    public class ArboTrieeParTaille implements Comparable {
    	private List<File> liste = new ArrayList<File>();
    	private File file;
     
    	public ArboTrieeParTaille(File file) {
    		Parcourir(file);
    		Collections.sort(liste);
    	}
     
    	public int compareTo(Object file) {
    		long nb1 = ((File) file).length();
    		long nb2 = this.getSize();
    		if (nb1 > nb2)
    			return -1;
    		else if (nb2 == nb1)
    			return 0;
    		else
    			return 1;
    	}
     
    	public void Parcourir(File file) {
    		if (file.isDirectory()) {
    			File[] list = file.listFiles();
    			if (list != null) {
    				for (int i = 0; i < list.length; i++) {
    					Parcourir(list[i]);
    				}
    			}
    		} else {
    			if (file.getName().endsWith("pdf")) {
    				liste.add(file);
    			}
    		}
    	}
    Je ne peux pas changer ma méthode compareTo(File o) sinon ils me disent qu'il y a une erreur et comme solution : "add unimplemented method"

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu dois passer un Comparator<File> à ton Collections.sort et ton implements Comparable sur ta classe ArboTrieeParTaille ne sert à rien, ce n'est pas une List<ArboTrieeParTaille> qui tu construit.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Par défaut
    Peux-tu être plus clair quand tu dis "Tu dois passer un Comparator<File>" ?
    Et au sujet de l'implémentation "Comparable" je ne la mets nulle part alors ?
    Merci !

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu dois fournir une implémentatin de Comparator<File> à la méthode Collections.sort(List<T>,Comparator<T>), et effectivement ton interface Comparable ne sert à rien.

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

Discussions similaires

  1. Trier une liste chainée.
    Par gregb34 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 21/05/2006, 22h05
  2. Trier une liste de dossiers et de fichiers
    Par steveleg dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 16h54
  3. trier une list
    Par elekis dans le forum C++
    Réponses: 4
    Dernier message: 23/03/2006, 12h01
  4. [c#] Trier une liste de nombres liés.
    Par Joad dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/05/2005, 11h17
  5. [Debutant(e)]Trier une liste
    Par LeDébutantJava dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 19/08/2004, 12h44

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