Diverses opérations telles que tri, mélanges, permutations d'éléments... peuvent être effectuées sur la liste en utilisant des méthodes static de la classe Collections.
Le programme suivant donne des exemples d'utilisation de ces méthodes pour une ArrayList contenant des nombres entiers.
import java.util.ArrayList; import java.util.Collections; public class MethodesStatiquesDeCollections{ // cette méthode permettra d'afficher le contenu de la liste sur une ligne, précédé d'un commentaire et suivi d'un trait horizontal entre deux sauts de ligne public static void affiche (String commentaire, ArrayList<?> a){ System.out.println(commentaire); for (Object E:a){ System.out.print(E+" "); } System.out.println("\n____\n"); } public static void main(String[] args) { ArrayList<Integer> maListeDEntiers=new ArrayList<Integer>(); //crée une liste destinée à contenir des nombres entiers //remplissage de la liste de 20 valeurs entières aléatoires comprises entre 0 et 20, appelée maListeDEntiers : for (int i=0;i<20;i++){ maListeDEntiers.add((int)(20*Math.random())); } affiche("Liste d'origine ", maListeDEntiers); // affiche la liste Collections.sort(maListeDEntiers); // trie les éléments de la liste par ordre croissant affiche("Liste triée ", maListeDEntiers);// affiche la liste Collections.reverse(maListeDEntiers); // inverse l'ordre des éléments affiche("puis inversée ", maListeDEntiers); //affiche la liste Collections.shuffle(maListeDEntiers); // mélange aléatoirement les éléments affiche("Liste mélangée", maListeDEntiers);// affiche la liste Collections.sort(maListeDEntiers); affiche("Liste à nouveau triée ", maListeDEntiers); Collections.rotate(maListeDEntiers,5); // réalise 5 fois une permutation circulaire en prenant le dernier élément de la liste et en l'insérant au début affiche("Liste après 5 permutations circulaires ", maListeDEntiers); Collections.swap(maListeDEntiers,2,15); //échange les deux éléments de la liste aux positions indiquées (ici 2 et 15) affiche("Liste après échange des éléments aux positions 2 et 15 (3ème et 16ème élément) ", maListeDEntiers); System.out.println("La liste contient "+Collections.frequency(maListeDEntiers,4)+" occurrences de la valeur 4"); // affiche le nombre d'occurrences de la valeur 4 dans la liste System.out.println("____\n"); // ligne de séparation System.out.println("le plus petit élément de la liste est " + Collections.min(maListeDEntiers)); // affiche la plus petite valeur contenue dans la liste System.out.println("_____\n"); System.out.println("le plus grand élément de la liste est " + Collections.max(maListeDEntiers)); // affiche la plus grande valeur contenue dans la liste System.out.println("_____\n"); } }
Exemple de résultat obtenu sur la console de sortie:
Liste d'origine 5 14 4 5 14 0 10 13 2 2 6 13 2 16 4 7 2 11 11 0 ____ Liste triée 0 0 2 2 2 2 4 4 5 5 6 7 10 11 11 13 13 14 14 16 ____ puis inversée 16 14 14 13 13 11 11 10 7 6 5 5 4 4 2 2 2 2 0 0 ____ Liste mélangée 2 6 0 14 2 4 0 4 11 16 14 7 2 10 11 5 2 13 13 5 ____ Liste à nouveau triée 0 0 2 2 2 2 4 4 5 5 6 7 10 11 11 13 13 14 14 16 ____ Liste après 5 permutations circulaires 13 13 14 14 16 0 0 2 2 2 2 4 4 5 5 6 7 10 11 11 ____ Liste après échange des éléments aux positions 2 et 15 (3ème et 16ème élément) 13 13 6 14 16 0 0 2 2 2 2 4 4 5 5 14 7 10 11 11 ____ La liste contient 2 occurrences de la valeur 4 ____ le plus petit élément de la liste est 0 _____ le plus grand élément de la liste est 16 ____