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.