Programmation Java 1A - TP21
Collections
|
Tableau trié ou non trié de
personnes
On souhaite écrire une classe
Java qui nous permettra de stocker des personnes, éventuellement
triées par ordre alphabétique de nom.
Recopier la classe Personne
du TP 18 dans un nouveau répertoire.
1. Tableau non trié
Lire la documentation de la classe ArrayList
(au moins le début du texte, ainsi que les constructeurs et
méthodes disponibles).
Cette classe va nous permettre de créer un "tableau" sans
utiliser la notation avec les crochets.
Ecrire une classe TableauPersonnes ayant pour seul attribut un
objet
de type ArrayList.
Dans cette classe, écrire un constructeur, une méthode void
ajouter(Personne p) qui permet d'ajouter une personne à la
liste,
une
méthode toString() qui sera utile pour afficher toutes
les personnes (on utilisera la méthode toString de la classe ArrayList), et une méthode main
dans laquelle vous
créez
quelques personnes, les ajoutez au tableau, et affichez le
contenu
du tableau.
Vérifiez bien que si vous ajoutez les personnes dans le
désordre, elles s'affichent de façon non triée
(l'affichage se fait dans
l'ordre
d'ajout).
2. Tableau trié
Lisez la documentation de la classe TreeSet (au moins le début
du texte, ainsi que les constructeurs et méthodes disponibles).
Recopiez la classe TableauPersonnes
dans un deuxième
fichier
nommé TableauTriePersonnes.
Dans la classeTableauTriePersonnes, remplacez le type
de l'attribut
ArrayList par TreeSet et faites les autres modifications
nécessaires (constructeur, main,
etc.) puis compilez et
exécutez. Les personnes sont-elles triées ? Que se
passe-t-il ?
Modifier la classe Personne
en ajoutant sur la première ligne
:
class Personne implements Comparable pour indiquer
à
Java que les objets de type Personne
peuvent être comparés à d'autres objets.
Compilez : que se passe-t-il ?
Ecrivez une méthode public
int compareTo(Object o) : elle doit renvoyer un entier dont
le
signe
indique si l'objet sur lequel on appelle cette méthode est plus
grand
ou plus petit que l'objet passé en paramètre. Vous
pourrez
utiliser la méthode compareTo de la classe String (allez
voir la documentation) pour
comparer
les noms des deux personnes. La première ligne de compareTo doit convertir l'objet o en Personne (ici on ne va comparer que
des personnes entre elles, pas des objets quelconques) : Personne p=(Personne)o;
Dans le main, appelez la
méthode compareTo sur
plusieurs personnes pour regarder la valeur de l'entier renvoyé
et comprendre le fonctionnement de cette méthode.
Remarque : si on ajoute dans un
TreeSet des objets que Java
sait comparer (voir les documentation des classes String, Integer, Double par exemple), on n'a pas
besoin d'écrire de méthode compareTo...
Modifier la méthode compareTo
de la classe Personne pour
que les personnes soient désormais triées par ordre
d'âge.