logo

Comment trier un tableau de chaînes en Java

En programmation, tri est important car il met en place des éléments d'un tableau dans un certain ordre. L'ordre largement utilisé est l'ordre alphabétique ou ordre naturel . Le tri est utilisé pour canoniser les données (le processus de conversion des données sous forme standard) et pour produire un format lisible par l'homme. Dans cette section, nous apprendrons comment trier un tableau de chaînes en Java en utilisant logique définie par l'utilisateur et Tableaux. trier() méthode

Il existe deux manières de trier un tableau de chaînes en Java :

  • En utilisant Défini par l'utilisateur Logique
  • En utilisant le Tableaux.sort() Méthode

Utilisation de la logique définie par l'utilisateur

Nous pouvons trier un tableau de chaînes en comparant chaque élément avec les autres éléments. Dans l'exemple suivant, nous avons fait la même chose. Nous en avons utilisé deux pour les boucles. La boucle for intérieure (seconde) évite les répétitions en comparaison. Si la condition (countries[i].compareTo(countries[j])>0) est vraie ou égale à 0, il effectue l'échange et trie le tableau.

table de réaction

SortStringArrayExample1.java

 import java.util.Arrays; public class SortStringArrayExample1 { public static void main(String args[]) { //defining an array of type String String[] countries = {&apos;Zimbabwe&apos;, &apos;South-Africa&apos;, &apos;India&apos;, &apos;America&apos;, &apos;Yugoslavia&apos;, &apos; Australia&apos;, &apos;Denmark&apos;, &apos;France&apos;, &apos;Netherlands&apos;, &apos;Italy&apos;, &apos;Germany&apos;}; int size = countries.length; //logic for sorting for(int i = 0; i<size-1; i++) { for (int j="i+1;" j0) swapping array elements string temp="countries[i];" countries[i]="countries[j];" countries[j]="temp;" } prints the sorted in ascending order system.out.println(arrays.tostring(countries)); < pre> <p> <strong>Output:</strong> </p> <pre> [ Australia, America, Denmark, France, Germany, India, Italy, Netherlands, South-Africa, Yugoslavia, Zimbabwe] </pre> <h3>Using the Arrays.sort() Method</h3> <p>In Java, <strong>Arrays</strong> is the class defined in the java.util package that provides <strong>sort()</strong> method to sort an array in ascending order. It uses <strong>Dual-Pivot Quicksort algorithm</strong> for sorting. Its complexity is <strong>O(n log(n))</strong> . It is a <strong>static</strong> method that parses an <strong>array</strong> as a parameter and does not return anything. We can invoke it directly by using the class name. It accepts an array of type int, float, double, long, char, byte.</p> <p> <strong>Syntax:</strong> </p> <pre> public static void sort(int[] a) </pre> <p>Where <strong>a</strong> is an array to be short.</p> <h4>Note: Like the Arrays class, the Collections class also provides the sort() method to sort the array. But there is a difference between them. The sort() method of the Arrays class works for primitive type while the sort() method of the Collections class works for objects Collections, such as LinkedList, ArrayList, etc.</h4> <p>We can perform sorting in the following ways:</p> <ul> <tr><td>Ascending Order</td> or <strong>Alphabetical Order</strong> or <strong>Natural Order</strong>  </tr><tr><td>Descending Order</td> or <strong>Reverse Natural Order</strong>  </tr></ul> <h3>Sort String Array in Ascending Order or Alphabetical Order</h3> <p>The <strong>ascending order</strong> arranges the elements in the lowest to highest order. It is also known as <strong>natural order</strong> or <strong>alphabetical order</strong> .</p> <p>Let&apos;s sort an array using the sort() method of the Arrays class.</p> <p> <strong>SortStringArrayExample2.java</strong> </p> <pre> import java.util.Arrays; public class SortStringArrayExample2 { public static void main(String args[]) { //defining an array of type string String[] countries = {&apos;Wood apple&apos;, &apos;Blackberry&apos;, &apos;Date&apos;, &apos;Naseberry&apos;, &apos;Tamarind&apos;, &apos;Fig&apos;, &apos;Mulberry&apos;, &apos;Apple&apos;, &apos;Plum&apos;, &apos;Orange&apos;, &apos;Custard apple&apos;, &apos;Apricot&apos;}; //sorts string array in alphabetical order or ascending order Arrays.sort(countries); //prints the sorted string array in ascending order System.out.println(Arrays.toString(countries)); } } </pre> <p> <strong>Output:</strong> </p> <pre> [Apple, Apricot, Blackberry, Custard apple, Date, Fig, Mulberry, Naseberry, Orange, Plum, Tamarind, Wood apple] </pre> <h3>Sort String Array in Descending Order or Reverse Natural Order</h3> <h3>Using the reverseOrder() Method</h3> <p>Java <strong>Collections</strong> class provides the <strong>reverseOrder()</strong> method to sort the array in reverse-lexicographic order. It is a static method, so we can invoke it directly by using the class name. It does not parse any parameter. It returns a <strong>comparator</strong> that imposes the reverse of the natural ordering (ascending order).</p> <p>It means that the array sorts elements in the ascending order by using the sort() method, after that the reverseOrder() method reverses the natural ordering, and we get the sorted array in descending order.</p> <p> <strong>Syntax:</strong> </p> <pre> public static Comparator reverseOrder() </pre> <p>Suppose, a[] is an array to be sort in the descending order. We will use the reverseOrder() method in the following way:</p> <pre> Arrays.sort(a, Collections.reverseOrder()); </pre> <p>Let&apos;s sort a string array in the descending order.</p> <p> <strong>SortStringArrayExample3.java</strong> </p> <pre> import java.util.*; public class SortStringArrayExample1 { public static void main(String args[]) { //defining an array of type String String[] countries = {&apos;Zimbabwe&apos;, &apos;South-Africa&apos;, &apos;India&apos;, &apos;America&apos;, &apos;Yugoslavia&apos;, &apos; Australia&apos;, &apos;Denmark&apos;, &apos;France&apos;, &apos;Netherlands&apos;, &apos;Italy&apos;, &apos;Germany&apos;}; //sorts array in descending order Arrays.sort(countries, Collections.reverseOrder()); //prints the sorted string array in descending order System.out.println(Arrays.toString(countries)); } } </pre> <p> <strong>Output:</strong> </p> <pre> [Zimbabwe, Yugoslavia, South-Africa, Netherlands, Italy, India, Germany, France, Denmark, America, Australia] </pre> <hr></size-1;>

Utilisation de la méthode Arrays.sort()

En Java, Tableaux est la classe définie dans le package java.util qui fournit trier() méthode pour trier un tableau par ordre croissant. Il utilise Algorithme de tri rapide à double pivot pour le tri. Sa complexité est O(n log(n)) . C'est un statique méthode qui analyse un tableau en paramètre et ne renvoie rien. Nous pouvons l'invoquer directement en utilisant le nom de la classe. Il accepte un tableau de type int, float, double, long, char, byte.

Syntaxe:

 public static void sort(int[] a) 

un est un tableau court.

Remarque : comme la classe Arrays, la classe Collections fournit également la méthode sort() pour trier le tableau. Mais il y a une différence entre eux. La méthode sort() de la classe Arrays fonctionne pour le type primitif tandis que la méthode sort() de la classe Collections fonctionne pour les objets Collections, tels que LinkedList, ArrayList, etc.

Nous pouvons effectuer le tri des manières suivantes :

    Ordre croissantou Ordre alphabétique ou Ordre naturel Ordre décroissantou Inverser l’ordre naturel

Trier un tableau de chaînes par ordre croissant ou alphabétique

Le ordre croissant classe les éléments du plus bas au plus élevé. Il est également connu sous le nom ordre naturel ou ordre alphabétique .

Trions un tableau en utilisant la méthode sort() de la classe Arrays.

SortStringArrayExample2.java

Linux modifier un fichier
 import java.util.Arrays; public class SortStringArrayExample2 { public static void main(String args[]) { //defining an array of type string String[] countries = {&apos;Wood apple&apos;, &apos;Blackberry&apos;, &apos;Date&apos;, &apos;Naseberry&apos;, &apos;Tamarind&apos;, &apos;Fig&apos;, &apos;Mulberry&apos;, &apos;Apple&apos;, &apos;Plum&apos;, &apos;Orange&apos;, &apos;Custard apple&apos;, &apos;Apricot&apos;}; //sorts string array in alphabetical order or ascending order Arrays.sort(countries); //prints the sorted string array in ascending order System.out.println(Arrays.toString(countries)); } } 

Sortir:

 [Apple, Apricot, Blackberry, Custard apple, Date, Fig, Mulberry, Naseberry, Orange, Plum, Tamarind, Wood apple] 

Trier le tableau de chaînes par ordre décroissant ou par ordre naturel inversé

Utilisation de la méthode reverseOrder()

Java Collections la classe fournit le ordre inverse() méthode pour trier le tableau dans l’ordre lexicographique inverse. C'est une méthode statique, nous pouvons donc l'invoquer directement en utilisant le nom de la classe. Il n'analyse aucun paramètre. Il renvoie un comparateur qui impose l'inverse de l'ordre naturel (ordre ascendant).

Cela signifie que le tableau trie les éléments dans l'ordre croissant en utilisant la méthode sort(), après quoi la méthode reverseOrder() inverse l'ordre naturel et nous obtenons le tableau trié par ordre décroissant.

Syntaxe:

 public static Comparator reverseOrder() 

Supposons que a[] soit un tableau à trier par ordre décroissant. Nous utiliserons la méthode reverseOrder() de la manière suivante :

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

Trions un tableau de chaînes par ordre décroissant.

gestion des exceptions en Java

SortStringArrayExample3.java

 import java.util.*; public class SortStringArrayExample1 { public static void main(String args[]) { //defining an array of type String String[] countries = {&apos;Zimbabwe&apos;, &apos;South-Africa&apos;, &apos;India&apos;, &apos;America&apos;, &apos;Yugoslavia&apos;, &apos; Australia&apos;, &apos;Denmark&apos;, &apos;France&apos;, &apos;Netherlands&apos;, &apos;Italy&apos;, &apos;Germany&apos;}; //sorts array in descending order Arrays.sort(countries, Collections.reverseOrder()); //prints the sorted string array in descending order System.out.println(Arrays.toString(countries)); } } 

Sortir:

 [Zimbabwe, Yugoslavia, South-Africa, Netherlands, Italy, India, Germany, France, Denmark, America, Australia]