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.