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é).

36voto

kimbaudi Points 2308

Il n'est pas directement possible de trier à l'envers un tableau de primitives (c'est-à-dire, int[] arr = {1, 2, 3}; ) en utilisant Arrays.sort() y Collections.reverseOrder() car ces méthodes nécessitent des types de référence ( Integer ) au lieu des types primitifs ( int ).

Cependant, nous pouvons utiliser Java 8 Stream pour mettre en boîte le tableau à trier dans l'ordre inverse :

// an array of ints
int[] arr = {1, 2, 3, 4, 5, 6};

// an array of reverse sorted ints
int[] arrDesc = Arrays.stream(arr).boxed()
    .sorted(Collections.reverseOrder())
    .mapToInt(Integer::intValue)
    .toArray();

System.out.println(Arrays.toString(arrDesc)); // outputs [6, 5, 4, 3, 2, 1]

15voto

Masoud Points 189

Tout d'abord, vous devez trier votre tableau en utilisant :

Collections.sort(myArray);

Ensuite, vous devez inverser l'ordre de l'ascendant au descendant en utilisant :

Collections.reverse(myArray);

11voto

Michel Jung Points 1162

Java 8 :

Arrays.sort(list, comparator.reversed());

Mise à jour : reversed() inverse le comparateur spécifié. Habituellement, les comparateurs sont classés par ordre croissant, ce qui change l'ordre en ordre décroissant.

5voto

Josip Maslac Points 54

Pour un tableau qui contient des éléments de primitives, s'il y a org.apache.commons.lang(3) Une façon simple d'inverser un tableau (après l'avoir trié) est d'utiliser :

ArrayUtils.reverse(array);

1 votes

Pourquoi les trier d'abord par ordre croissant, puis utiliser une bibliothèque externe pour rétablir cet ordre, alors que cela peut être fait en une seule étape ?

1 votes

Et cette étape étant ?

5 votes

Oui, mais (comme indiqué dans les commentaires de ces réponses) cela ne fonctionne pas pour les primitives que ma réponse aborde. Bien sûr, ma réponse n'est certainement pas la meilleure, mais j'ai trouvé qu'elle répondait aux critères de "facilité" soulignés par l'auteur original - c'est-à-dire qu'elle est facile à utiliser. Arrays.sort(primitives); ArrayUtils.reverse(primitives);

5voto

alkesh Miyani Points 25

Lorsqu'un tableau est un type de la classe Integer, vous pouvez utiliser la méthode suivante :

Integer[] arr = {7, 10, 4, 3, 20, 15};
Arrays.sort(arr, Collections.reverseOrder());

Lorsqu'un tableau est un type de données de type int, vous pouvez utiliser la méthode suivante :

int[] arr = {7, 10, 4, 3, 20, 15};
int[] reverseArr = IntStream.rangeClosed(1, arr.length).map(i -> arr[arr.length-i]).toArray();

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