375 votes

Java Array Sort descendant ?

Existe-t-il un moyen FACILE de trier un tableau dans l'ordre décroissant, comme le tri dans l'ordre ascendant dans la base de données de l'UE ? Classe des tableaux ?

Ou dois-je arrêter d'être paresseux et faire cela moi-même :[

0 votes

Jetez un coup d'œil à la utilisations de Collections.reverseOrder

6 votes

La plupart des solutions ci-dessous fonctionnent sur Integer et non sur le type int (assurez-vous que vous utilisez le type approprié).

451voto

Vous pouvez l'utiliser pour trier toutes sortes d'objets.

sort(T[] a, Comparator<? super T> c) 

Arrays.sort(a, Collections.reverseOrder());

Arrays.sort() ne peut pas être utilisé directement pour trier des tableaux primitifs dans l'ordre décroissant. Si vous essayez d'appeler la fonction Arrays.sort() en passant le comparateur inverse défini par Collections.reverseOrder() le message d'erreur suivant s'affichera

aucune méthode appropriée trouvée pour sort(int[],comparator)

Cela fonctionnera bien avec un "tableau d'objets" tel qu'un tableau d'entiers, mais pas avec un tableau primitif tel qu'un tableau d'int.

La seule façon de trier un tableau primitif dans l'ordre décroissant est de trier d'abord le tableau dans l'ordre croissant, puis d'inverser le tableau en place. Ceci est également vrai pour les tableaux primitifs à deux dimensions.

120voto

Ornithopter Points 295

Pour une liste

Collections.sort(list, Collections.reverseOrder());

pour un tableau

Arrays.sort(array, Collections.reverseOrder());

72 votes

Int []array = {2,4,3,6,8,7} ; Arrays.sort(array, Collections.reverseOrder()) ; me donne une erreur ! L'erreur est la suivante : "La méthode sort(int[]) dans le type Arrays n'est pas applicable pour les arguments (int[], Comparator<Object>)".

14 votes

Int n'est pas un Objet. Essayez d'utiliser Integer[] à la place.

6 votes

Int est un type primaire alors que Integer ne l'est pas. C'est pourquoi Integer possède des méthodes comme parse, toString, etc.

93voto

William Points 456

Vous pouvez utiliser ceci :

    Arrays.sort(data, Collections.reverseOrder());

Collections.reverseOrder() renvoie un Comparator en utilisant l'ordre naturel inversé. Vous pouvez obtenir une version inversée de votre propre comparateur en utilisant Collections.reverseOrder(myComparator) .

16 votes

L'OP veut trier un tableau. Collections.sort() prend un List comme paramètre d'entrée, et non un tableau.

88voto

FHDougherty Points 1

Une alternative pourrait être (pour les chiffres ! !!)

  1. multiplier le tableau par -1
  2. trier
  3. multiplier encore une fois avec -1

Parlé littéralement :

array = -Arrays.sort(-array)

55voto

Milan Points 637

Sans comparateur explicite :

Collections.sort(list, Collections.reverseOrder());

avec comparateur explicite :

Collections.sort(list, Collections.reverseOrder(new Comparator()));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X