package collect;

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

/**
 * D&eacute;monstration d&rsquo;ArrayList. Travaille sur des String
 * @author Christian Mascart
 *
 */
public class DemoArrayList
{
	private String tableauCouleurs[] = {"Bleu", "Vert", "Cyan", "Bleu", "Rouge", "Jaune", "Violet", "Blanc"};
	private String tableauAnimaux[] = {"Chat", "Lapin", "Chien", "Tortue", "Souris", "Rat", "Cheval", "Vache", "Moineau", "Serpent"};
	
	// On n'est pas obligé de spécifier le type d'objet contenu dans l'ArrayList
	ArrayList<String> maListeCouleurs = new ArrayList<String>();
	ArrayList<String> maListeAnimaux = new ArrayList<String>();
	public DemoArrayList()
	{
		// Remplissage de l'ArrayList
		for(int i = 0; i < tableauCouleurs.length; i++)
		{
			maListeCouleurs.add (tableauCouleurs[i]);
		}
		
		System.out.println("Démonstration d'ArrayList : voici la liste initiale");
		afficherArrayList(maListeCouleurs);
		
		System.out.println("\nJe trie l'ArrayList");
		Collections.sort(maListeCouleurs);
		afficherArrayList(maListeCouleurs);
		
		System.out.println("\nJ'enlève l'élément n°3");
		maListeCouleurs.remove(3);
		afficherArrayList(maListeCouleurs);
		
		System.out.println("\nJ'ajoute un élément en fin de liste");
		maListeCouleurs.add("Orangé");
		afficherArrayList(maListeCouleurs);
		
		System.out.println("\nJ'ajoute un élément position 3, un autre en position 5");
		maListeCouleurs.add(3, "Magenta");
		maListeCouleurs.add(5, "Ocre");
		afficherArrayList(maListeCouleurs);
		
		System.out.println("\nJe trie la liste");
		Collections.sort(maListeCouleurs);
		afficherArrayList(maListeCouleurs);
		
		System.out.print("\nDémonstration d'un itérateur : [");
		Iterator<String> monIterateur = maListeCouleurs.iterator();
		while(monIterateur.hasNext())
		{
			System.out.print(".");
			monIterateur.next();
		}
		System.out.println("]");
		
		System.out.println("\nConstruction d'une seconde liste d'animaux.");
		for(int i =0; i < tableauAnimaux.length; i++)
		{
			maListeAnimaux.add(tableauAnimaux[i]);
		}
		afficherArrayList(maListeAnimaux);
		
		System.out.println("\nAjout (addAll) de la liste des animaux à la liste des couleurs.");
		maListeAnimaux.addAll(maListeCouleurs);
		
		System.out.println("\nAffichage de la liste des animaux et des couleurs");
		afficherArrayList(maListeAnimaux);
		
		System.out.println("\nTri de la nouvelle liste obtenue.");
		Collections.sort(maListeAnimaux);
		afficherArrayList(maListeAnimaux);
	}
	
	private void afficherArrayList (ArrayList<String> pListe)
	{
		System.out.print("[ ");
		for(int i = 0; i < pListe.size(); i++)
		{
			System.out.print(pListe.get(i));
			System.out.print(i < pListe.size() - 1 ? ", " : "");
		}
		System.out.println(" ]");
	}
}
