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 :

NullPointer, sort et Comparator


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut NullPointer, sort et Comparator
    Bonjour à tous,

    Je suis face à un problème assez incompréhensible, lors d'un appel à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collection.sort(maList,new Comparator)
    je reçois un NullPointer ...

    Bon jusque là rien d'exceptionnel, mais en mode debug j'ai l'impression que le null pointer ne provient pas de mon code mais de de l'algo de tri fait pas la classe collection

    Bon un bug à ce niveau là de l'api étant extrêmement hautement improbable, je me dis que ça doit venir de mes comparator ...

    Je pense qu'il y a un comparator dans lequel je me retrouve avec une liste a,b,c
    et avec les comparators qui donnent :
    a > b
    b > c
    c > a
    ==> NullPointeur


    Du coup je me demandais si il y a une "best practice" pour le code des comparator sur le traitement des null ????
    Est ce que quelqu'un a déjà eu un cas similaire ??

    Voila un exemple de comparator :

    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
     
    public class TotoComparator implements Comparator<Toto>{
     
    public int compare(Toto toto1, Toto toto2) {
     
    		String nom1= toto1.getPseudo();
    		String nom2= toto2.getPseudo();
     
    		if (nom1 != null || nom2 != null){
    			if (nom1 == null){
    				return -1;
    			}
    			if (nom2 == null){
    				return 1;
    			}		
     
    			else{
    				int compareToNom = nom1.compareTo(nom2);
    				if (compareToNom != 0){
    					return compareToNom;
    				}
    			}			
    		}
    	}
     
    }

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas s'il y a de "bonnes pratiques" pour l'écriture de compareTo, mais il me semble que ton comparator ne renvoie rien dans certains cas. Si toto1 non null et toto2 non null, mais que leurs 2 pseudos sont les mêmes, ton compareTo ne renvoie rien.....

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    effectivement mais c'est du à un mauvais copié collé de ma part ....

    il y a un return 0 à la fin de la méthode dsl

    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 class TotoComparator implements Comparator<Toto>{
     
    public int compare(Toto toto1, Toto toto2) {
     
    		String nom1= toto1.getPseudo();
    		String nom2= toto2.getPseudo();
     
    		if (nom1 != null || nom2 != null){
    			if (nom1 == null){
    				return -1;
    			}
    			if (nom2 == null){
    				return 1;
    			}		
     
    			else{
    				int compareToNom = nom1.compareTo(nom2);
    				if (compareToNom != 0){
    					return compareToNom;
    				}
    			}			
    		}
                  return 0;
    	}
     
    }

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu n'as pas d'objet à null dans ta liste ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    Non pas d'objet Null

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu n'arrives pas à trouver la ligne qui génère l'erreur ? Même en debug ?

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 22/07/2014, 13h55
  2. [XSLT] pour un sort pour comparer avec l'ancienne valeur
    Par MiniDeb dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 01/08/2007, 08h07
  3. StringGrid sort
    Par clovis dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/10/2004, 21h46
  4. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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