import static java.lang.System.*;  // cf. Java 5
import java.util.*;
import java.io.*;

/**
  * Classe 'vecarray' :  Test de qq. méthodes des conteneurs 'ArrayList' et 'Vector'
  * @author   (c) ~/2A env.
  * @version  1.1   2006.08.23
  * @since    1.0   2005.09.30
  */

public class vecarray    {

   ArrayList<String> shape = new ArrayList<String>();  // cf. Java 5
   Vector<String> color = new Vector<String>(10,5);

/**
  * Méthode principale publique  de classe 'main(...)'.
  * Elle utilise la classe 'es' pour accéder aux méthodes de classe:
  *    attente() - affichage de l'heure de fin d'exécution,
  *    LireCh()  - lecture récursive d'une chaîne de caractères,
  *    LireCh(guide) - idem mais un message de guide en lecture.
  *
  * @param args Tableau de chaînes pour ligne de commande éventuelle
  */

   public static void main(String [] arg)  { 

     vecarray  O = new vecarray();  // O : un objet courant
     out.println("\nVECARRAY :  Un exemple d'emploi de 'ArrayList', 'Vector',");
     out.println("\t'Iterator' et 'Enumeration' (c)~/2a env. MAJ: 2006.08.23 19h15\n");
     O.shape.add( (new String( "rectangle")  )  ); 
     O.shape.add("triangle"); 
     O.shape.add("cercle");
     for (int i=0; i< O.shape.size(); ++i)
            out.println(O.shape.get(i));

/*   // Question 1: Que se passe-t-il si on dé-commente ce bloc ?
     Iterator it = O.shape.iterator();
     while(it.hasNext()) {
        String str = (String) it.next();
        out.println(str);
     }
*/
     out.printf("\n");   // cf. Java 5

     O.color.add("bleu  "); O.color.add("blanc "); 
     O.color.addElement("rouge ");
     for (int i=0; i < O.color.size(); ++i)
          out.println(O.color.get(i));

/*   // Question 2: Que se passe-t-il si on dé-commente ce bloc ?
     Enumeration listColor = O.color.elements();
     while(listColor.hasMoreElements())  {
        String str = (String) listColor.nextElement();
        out.println(str);
     }
*/
     if ( O.color.elementAt(O.color.size()-1).equals( O.color.lastElement()))
          out.println("\nDernier élément = "+ O.color.lastElement()); 
     out.println("Capacité= "+O.color.capacity()+" Taille= "+O.color.size());
     O.color.trimToSize();
     out.println("Nouvelle capacité = "+O.color.capacity() );
     es.attente();
   }
}

