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 ____