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