2010-12-08 27 views
1

Je reçois NullPointerException lorsque je tente de trier une liste en faisant le Collections.sort (list2)Liste d'erreurs de tri à l'aide Collections.sort

la liste contient les chaînes suivantes

[ BOOTH 4, PEV CHAMBRE, BOOTH 6, C & T Zone d'attente, C & T Zone d'attente, C & T Zone d'attente, BOOTH 10, BOOTH 7, BOOTH 3, BOOTH 1, C & T Zone d'attente, C & T Zone d'attente, C & T Zone d'attente, C & T Zone d'attente, BOOTH 1, C & T attente Zone C & T Zone d'attente, C & T attente Zone C & T Zone d'attente, C & T attente Area, C & T zone d'attente, C & T attente zone C & T zone d'attente, C & T attente zone, BOOTH 10, C & T zone d'attente, C & T zone d'attente, C & T zone d'attente , C & T Waiting Area, C & T Zone d'attente, C & T Waiting Area, C & T Zone d'attente, null, null, null, null, null, null, null, null, null, null, null, null , null, null, null, null, null]

Dois-je utiliser un comparateur pour cette liste?

+5

"Je reçois une exception" n'est pas un rapport d'erreur utile. Les traces de pile sont là pour une raison. – skaffman

+0

@ user521180 quelle exception? Une trace ou un code de pile vous aidera réellement – ant

Répondre

2

Supprimer les valeurs null avant de trier. Ils ne peuvent pas être triés

+3

Strictement, ils peuvent * être * triés, mais seulement si vous fournissez un objet Comparator qui fait quelque chose de sensé avec des références 'null'. –

+0

@Stephen C - Oui, vous avez raison. Impossible de voir les comparateurs dans l'appel: Collections.sort (list2) –

4

Vous pouvez utiliser un comparateur capable de gérer les valeurs nulles. Par exemple.

private static final class NullsFirstComparator implements Comparator<String> { 
    public int compare(String lhs, String rhs) { 
    if (lhs == rhs) 
     return 0; 
    if (lhs == null) 
     return -1; 
    if (rhs == null) 
     return 1; 
    return lhs.compareTo(rhs); 
    } 
} 

qui triera les valeurs nulles première (ils sont moins que tout)

1

Vous pouvez également utiliser NullComparator dans Apache commons. It fournir beaucoup d'utilitaires utiles pour l'écriture comparateur