Programmation Java 1A - TP11
Utiliser des classes prédéfinies de Java
La classe ArrayList


L'objectif de ce TP¨est d 'apprendre à utiliser des classes prédéfinies de Java.
Nous utiliserons pour cela la classe ArrayList.


a. On considère l'algorithme ci-dessous :

 

     Algorithme Noms
        // Récupère des noms de personnes. On ne sait pas à l'avance combien il y en a.
     Variables
         noms : liste de texte  // la liste des noms 
         i : entier // indice de parcours de la liste
         nom : texte // variable de saisie
      Début
        noms.initialiser( )
        nom <- saisir ("entrez le nom d'une personne (tapez "stop" pour arrêter)")
        TantQue nom != "stop" Faire
           noms.insérer (nom)
           nom <- saisir ("entrez le nom d'une personne (tapez "stop" pour arrêter)")
        FinTanTQue
        Pour i de 0 à noms.longueur ( ) -1 Faire
           afficher (noms.lire(i) + "\t")
        FinPour
      FinAlgo

Traduire en Java cet algorithme.
On se contentera pour l'instant de placer tout le code dans une méthode main.

Remarque 1 : pour utiliser la classe ArrayList, il faut indiquer au compilateur Java où celle-ci se trouve en indiquant en début de programme (avant la classe):
    import java.util.ArrayList ;

Remarque 2 : pour tester en Java  l'égalité de deux textes, les comparateurs = et != ne fonctionnent pas (pour la même raison que comparer deux tableaux avec = ou != ne fonctionne pas).
Si s1 et s2 sont des variables de type String, on peut utiliser s1.equals(s2).
Par exemple, on pourra écrire le code suivant :  if ( ! s1.equals(s2) ) ...

b. Ecrire une méthode afficheListe qui prend en paramètre une ArrayList de String et affiche tous ses éléments. Modifier le programme principal pour faire appel à cette méthode.

c. Ecrire une méthode compteTextesCommencantPar qui prend en paramètre une ArrayList de String et un type char, et retourne le nombre de textes qui commencent par la lettre en question.
Modifiez le programme principal pour faire appel à cette méthode et afficher le nombre de noms commençant par la lettre f.
Rappel : vous avez vu en début d'année comment récupérer le premier caractère d'un type String sous la forme d'un type char.
 
 
 

Documentation Java

La documentation Java décrit (entre autres) l'ensemble des classes prédéfinies de Java.
Une copie de cette documentation est accessible sur www.iut.univ-paris8.fr/~rety/docJava/api/index.html

Consultez la documentation de la classe ArrayList.
Repérez en particulier les méthodes de cette classe.
Parmi les méthodes de la classe ArrayList, repérez en particulier celles correspondant aux opérations élémentaires sur les listes vues en cours : longueur, lire, affecter, insérer, supprimer.

d. Ecrire une méthode supprimeTextesSeTerminantPar_e qui prend en paramètre une ArrayList de String et supprime de la liste tous les textes se terminant par la lettre e (vous chercherez dans la documentation Java de la Classe String comment accéder au dernier caractère d'un type String).
Modifier le programme principal pour exécuter cette méthode et afficher ensuite la liste des noms pour vérifier le résultat.

e. En vous appuyant sur la documentation Java de la classe ArrayList, écrire une méthode qui teste si le nom Hyppolite est présent dans la liste (la méthode retourne un booléen). Ce test est sensible à la casse. Bien sûr : il faut modifier le programme principal pour mettre en oeuvre cette méthode et s'assurer qu'elle fonctionne...

f. En vous appuyant sur la documentation de la classe String, écrire une méthode qui met tous les noms de la liste entièrement en majuscules.

g. Repérer dans la documentation de la classe String comment comparer deux String en fonction de l'ordre alphabétique.
Ecrire une méthode insérerTrié qui, en supposant que la liste soit déjà triée, insère un nouveau nom de telle façon que la liste reste triée. Attention à l'écriture de la spécification de cette méthode. Celle-ci doit être précise et complète (et bien sûr : bien rédigée).
Ecrire une méthode main (mettre en commentaire l'ancienne méthode main afin de garder la trace de votre travail précédent) dans laquelle des noms sont saisis et insérés dans la liste à l'aide de la méthode insérerTrié.  A la fin de la saisie la liste est affichée... celle-ci doit bien sûr être triée.

Remarque :  cette façon de maintenir une liste triée n'est pas efficace. D'autres méthodes biens meilleures seront étudiées en deuxième année en cours d'Algorithmique.

h. (facultatif). Ecrire une méthode qui retourne (sous la forme d'un double) le nombre moyen de caractères composant les noms de la liste. Attention à donner un comportement cohérent à cette méthode en cas de liste vide (en particulier, la méthode ne doit pas planter). Ecrire soigneusement la spécification.