Trier ArrayList de chaînes par longueur
Je veux commander une liste de tableaux de chaînes de caractères en longueur, mais pas seulement, dans l'ordre numérique.
Dire, par exemple, la liste contient ces mots:
cucumber
aeronomical
bacon
tea
telescopic
fantasmagorical
Ils doivent être commandés par leur différence dans la longueur d'une chaîne de caractères spéciaux, par exemple:
intelligent
Donc la liste finale devrait ressembler à ceci (différence entre parenthèses):
aeronomical (0)
telescopic (1)
fantasmagorical (3) - give priority to positive differences? doesn't really matter
cucumber (3)
bacon (6)
tea (8)
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Utiliser un comparateur de:
Ensuite trier la liste à l'aide de
java.util.Collections.sort(List, Comparator)
.Si vous êtes à l'aide de Java 8+, vous pouvez utiliser une expression lambda à mettre en œuvre (@Barend de réponse) le comparateur
Vous auriez du le faire avec la version de Les Collections.sort() qui prend explicitement Comparateur.
Je pense que les solutions proposées sont illégales.
Le Comparateur interface de contrat exige que la méthode de comparaison d'être cohérente avec la méthode equals.
Cela signifie que si vous avez
x.compareTo(y) == 0
alors vous devez avoirx.equals(y) == true
.Alors, peut-être les solutions de travail dans la pratique, mais ils ne sont pas garantis et peuvent se casser dans la prochaine version.