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 :[
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 :[
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]
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 ?
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);
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 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.
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é).