Algorithmique et langage Java

Opérations sur la liste

utilisation des méthodes de Collections

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
____

 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé