Comment trier un ArrayList avec Comparator en Java

Par défaut, les éléments dans ArrayList sont affichés dans l'ordre de leur insertion dans la liste, mais parfois on a besoin de parcourir ces éléments dans l'ordre croissant ou décroissant. Ce code implémente la méthode Collections.sort() qui fait le tri d'un Arraylist dans l'ordre croissant et décroissant.

Trier ArrayList dans l'ordre croissant

import java.util.ArrayList;
import java.util.Collections;

public class Tri {

 public static void main(String[] args) {
 ArrayList nontrié = new ArrayList();
 nontrié.add("01");
 nontrié.add("0A");
 nontrié.add("0B");
 nontrié.add("ETX");
 nontrié.add("00");
 nontrié.add("0C");
 nontrié.add("NUL");
 nontrié.add("05");
 nontrié.add("19");
 nontrié.add("0001011");
 
 System.out.println("Avant le tri");
 for(int i=0; i < nontrié.size(); i++)
 System.out.println(nontrié.get(i));
 
 System.out.println("\nAprès le tri");
 Collections.sort(nontrié);
 for(int i=0; i < nontrié.size(); i++)
 System.out.println(nontrié.get(i));
 }
}
Sortie:

Avant le tri
01 
0A 
0B 
ETX 
00 
0C 
NUL 
05 
19 
0001011 

Après le tri
00 
0001011 
01 
05 
0A 
0B 
0C 
19 
ETX 
NUL 

Trier ArrayList dans l'ordre décroissant

La classe Collections possède une autre méthode Collections.sort(List<T>, Comparator<T>) qui permet de trier un ArrayList dans l'ordre croissant et décroissant. Cette fonction utilise un comparateur d'objets qui à chaque fois compare deux objets avec la fonction o1.compareTo(o2).

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Tri {

 public static void main(String[] args) {
 ArrayList nontrié = new ArrayList();
 nontrié.add("11000000");
 nontrié.add("10101000");
 nontrié.add("00000001");
 nontrié.add("00001111");
 nontrié.add("00001100");
 nontrié.add("00001111");
 nontrié.add("11111111");
 nontrié.add("11111100");
 nontrié.add("00000000");
 nontrié.add("00000011");
 nontrié.add("00001110");
 
 System.out.println("Avant le tri");
 for(int i=0; i < nontrié.size(); i++)
 System.out.println(nontrié.get(i)+" ");
 
 System.out.println("\nAprès le tri");

 Collections.sort(nontrié, new Comparator() {
 @Override
 public int compare(String s1, String s2)
 {
 /*s2 comparée à s1 pour que l'ordre soit décroissant
 return s2.compareTo(s1);
 }
 });
 for(int i=0; i < nontrié.size(); i++)
 System.out.println(nontrié.get(i)+" ");
 }
}
Sortie:

Avant le tri
11000000 
10101000 
00000001 
00001111 
00001100 
00001111 
11111111 
11111100 
00000000 
00000011 
00001110 

Après le tri
11111111 
11111100 
11000000 
10101000 
00001111 
00001111 
00001110 
00001100 
00000011 
00000001 
00000000 
Références:
American Standard Code for Information Interchange
Documentation Collections.sort
stackOverFlow:How to sort a ArrayList in java

Commentaires (0)

Connectez-vous pour commenter

Rejoignez la discussion et partagez vos connaissances avec la communauté

Chargement des commentaires...