logo

Programme Java pour trier une ArrayList

ArrayList est la classe fournie dans le framework Collection. En Java, le cadre de collecte est défini dans le package java.util. ArrayList est utilisé pour stocker dynamiquement les éléments. Il est plus flexible qu'un tableau car il n'y a pas de limite de taille dans ArrayList. ArrayList stocke les données de manière désordonnée. Dans certains cas, nous devons réorganiser les données de manière ordonnée.

Il existe deux types d’ArrayList en Java. L’un est ArrayList d’objets de classe Wrapper et un autre est ArrayList d’objets définis par l’utilisateur. Nous verrons le tri des deux types d’ArrayList. Commençons par le premier.

  1. Tri d'une ArrayList d'objets Wrapper Class.
    • Ordre croissant
    • Ordre décroissant
  2. Tri d'une ArrayList d'objets définis par l'utilisateur.
    • Comparable
    • Comparateur

Type 1 : tri d'une liste ArrayList d'objets de classe Wrapper



Un objet de classe ArrayList de Wrapper n'est rien d'autre qu'un ArrayList d'objets comme String, Integers, etc. Un ArrayList peut être trié de deux manières, par ordre croissant et décroissant. La classe collection fournit deux méthodes pour trier ArrayList. sort() et reverseOrder() pour l'ordre croissant et décroissant respectivement.

1(A)Ordre croissant

idée complète

Cette méthode sort() accepte l’objet liste comme paramètre et renverra une ArrayList triée par ordre croissant. La syntaxe de la méthode sort() est la suivante.

Collections.sort(objectOfArrayList);>

Tous les éléments de l'ArrayList doivent être mutuellement comparables, sinon cela renvoie ClassCastException . Ici, mutuellement comparable signifie que tous les éléments de la liste ont le même type de données.

ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');>

Dans l'exemple ci-dessus, nous voyons qu'une liste comporte trois éléments, dont deux éléments sont de type Integer et un est de type String. Les deux éléments de type Integer sont mutuellement comparables, mais l'élément de type String n'est pas comparable aux deux autres. Dans ce cas, nous pouvons obtenir une ClassCastException. Par conséquent, la liste doit avoir le même type d’éléments.

Considérons l'exemple suivant pour comprendre le tri.

Java




// Java Program to Sort an ArrayList> // import java.util package> import> java.util.*;> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>'India'>);> >list.add(>'Pakistan'>);> >list.add(>'Srilanka'>);> >list.add(>'USA'>);> >list.add(>'Australia'>);> >list.add(>'Japan'>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in ascending Order> >Collections.sort(list);> >// printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

>

>

Sortir:

Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>

1(B) Ordre décroissant

Pour trier une ArrayList par ordre décroissant, nous utilisons ordre inverse() méthode comme argument d’une méthode sort(). nous ne pouvons pas appeler directement la méthode reverseOrder(). Cette méthode prend deux paramètres, l'un est un objet de ArrayList et le deuxième paramètre est la méthode Collections.reversOrder(). Cette méthode renverra ArrayList par ordre décroissant. Semblable à la méthode sort(), ArrayList doit être mutuellement comparable, sinon elle renvoie ClassCastException .

Collections.sort(objectOfArrayList, Collections.reverseOrder());>

Ici, cette méthode trie d’abord les éléments par ordre croissant, puis inversera l’ordre des éléments triés.

Java




// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>410>);> >list.add(>250>);> >list.add(>144>);> >list.add(>967>);> >list.add(>289>);> >list.add(>315>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in descending Order> >Collections.sort(list, Collections.reverseOrder());> >// Printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

>

insérer un filigrane dans Word
>

Sortir:

Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>

2. Tri d'une ArrayList d'objets définis par l'utilisateur

Une ArrayList d'objets définis par l'utilisateur n'est rien d'autre qu'une ArrayL.ist d'objets personnalisés. En Java, il existe deux interfaces qui peuvent être utilisées pour trier les éléments d'une collection. Comparable et comparateur.

2(A) Comparable

Comparable fournit une seule séquence de tri. Si nous utilisons Comparable, cela affectera la classe d'origine. L'interface comparable fournit comparer aux() méthode pour trier les éléments. En Java, la comparaison est fournie par le package java.lang. Nous pouvons trier la ArrayList en appelant Méthode Collections.sort(Liste) .

Exemple: Le tri est effectué en fonction du nombre de voitures en stock.

Java




différence entre un gigaoctet et un mégaoctet
// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> // Implements comparable interface into custom class> class> Car>implements> Comparable {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor of the class> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> >// Override the compareTo method> >public> int> compareTo(Car car)> >{> >if> (stock == car.stock)> >return> 0>;> >else> if> (stock>car.stock)> >return> 1>;> >else> >return> ->1>;> >}> }> // Main driver method> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c);> >// Iterate over ArrayList using for each loop> >for> (Car car : c) {> >// Print the sorted ArrayList> >System.out.println(car.ModalNo +>' '> + car.name> >+>' '> + car.stock);> >}> >}> }>

>

>

Sortir:

2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>

2(B) Comparateur

Comparator fournit plusieurs séquences de tri. Le comparateur n'affectera pas la classe d'origine. Le comparateur fournit comparer() méthode pour trier les éléments. En Java, une comparaison est fournie par le package java.util. Nous pouvons trier l’ArrayList en appelant la méthode Collections.sort(List, Comparator). Prenons un exemple.

Java




// Java Program to Sort an ArrayList> // Step 1: ImportingDB files> import> java.util.*;> // Class 1: Parent Class> class> Car {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> }> // Class 2: Child class> // creates the comparator for comparing stock value> class> StockComparator>implements> Comparator {> >// Function to compare> >public> int> compare(Car c1, Car c2)> >{> >if> (c1.stock == c2.stock)> >return> 0>;> >else> if> (c1.stock>c2.stock)> >return> 1>;> >else> >return> ->1>;> >}> }> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c,>new> StockComparator());> >// For each loop to iterate> >for> (Car car : c) {> > >// Print the sorted ArrayList> >System.out.println(car.stock +>' '> + car.name> >+>' '> + car.ModalNo);> >}> >}> }>

>

>

Sortir:

10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>