Les Collections.le tri n'est pas le tri de tout ce
Je suis en train de trier un tableau de chaînes à court, moyen simple.
Je suis en train d'utiliser des Collections.genre, mais je ne comprends pas pourquoi il ne sorte rien.
Code:
public static String[] FishNamesSorted;
.....
List<String> nameslist = new ArrayList<String>();
nameslist.toArray(FishNamesSorted);
Collections.sort(nameslist, String.CASE_INSENSITIVE_ORDER); <--- NOT WORKING
Collections.sort(nameslist, new Comparator<String>() { <--- NOT WORKING
@Override
public int compare(String p1, String p2) {
if (p1 == null) {
return 1;
}
if (p2 == null) {
return -1;
}
return p1.compareToIgnoreCase(p2);
}
});
Résultats dans les deux cas:
- Poecilia Latipinna
- Poecilia Reticulata
- Notropis Chrosomus
- Pseudomugil Gertrudae
- ....
Whyyyy?
Quel est le type de
S'il vous plaît montrer une courte mais complète du programme montrant le problème.
Dans l'exemple que vous avez donné vous n'êtes pas ajouter quoi que ce soit à
Avez-vous essayé de trier juste l'original
Il fonctionne si vous l'utilisez correctement. Si jmcg qui est bien avec l'hypothèse que vous êtes en train de penser que
nameslist
?S'il vous plaît montrer une courte mais complète du programme montrant le problème.
Collections.sort
certainement t travail en général...Dans l'exemple que vous avez donné vous n'êtes pas ajouter quoi que ce soit à
nameslist
, de sorte que vous êtes le tri d'un vide List<String>
.Avez-vous essayé de trier juste l'original
FishNamesSorted
tableau à l'aide de Arrays.sort(FishNamesSorted, String.CASE_INSENSITIVE_ORDER);
?Il fonctionne si vous l'utilisez correctement. Si jmcg qui est bien avec l'hypothèse que vous êtes en train de penser que
FishNamesSorted
également être triés par Collections#sort
appel (après "l'exportation" de la liste dans le tableau), alors vous devriez certainement re-lire ce #toArray()
fait vraiment.OriginalL'auteur Berit Larsen | 2015-01-27
Vous devez vous connecter pour publier un commentaire.
Collections.sort(list)
fonctionne bien. Le problème dans votre code est vous avez placé la liste dans le tableau avant de les trier. Le tableau doit être trié si vous triez votre liste d'abord avant de le mettre dans le tableauOriginalL'auteur jmcg
Vous êtes censé mettre votre
nameslist
dans votreFishNamesSorted
tableau seulement après qu'il est trié, dont vous n'êtes pas en train de faire maintenant.un coup d'oeil,
juste pour info, vous pouvez faire votre tri de travail sur le processus encore plus rapide si vous utilisez Java 8.
Java 8 fournit une API pour le tri n'importe quel type de tableau à l'aide de
Arrays.parallelSort(type)
, il effectue un tri de la même façon queCollection.sort
mais, en parallèle avec la mise en œuvre.à mettre en œuvre, remplacer
Collections.sort
avecArrays.parallelSort
dans le code ci-dessus,remplacer,
avec,
OriginalL'auteur Sufiyan Ghori
La solution a été
J'avais mal compris comment il fonctionne
OriginalL'auteur Berit Larsen