Enseignement > Programmation orientée objet > Java > Travaux Pratiques > TP n°4 - Collections  

TP n°6 - Collections

Liste d’entiers


L’objectif de ce TP est de manipuler et de comparer l’usage des différentes classes de Collections (List et Set)

1. int et Integer
En Java, il existe des types de base (int, long, float, double, boolean,…) et leurs équivalents sous forme d’objets (Integer, Long, Double, Boolean…).
Examiner dans la documentation, la classe Integer.
Quels sont les avantages et les inconvénients de manipuler des entiers sous la forme d’objets plutôt que de types simples ?

2. Ecrire un programme Java permettant de créer la liste des multiples de 3 inférieurs à 999999, dans un objet de la classe ArrayList. Afficher cette liste en utilisant la méthode toString de cette liste.

3. Mesures du temps écoulé et de la mémoire utilisée.
Utiliser la méthode non statique freeMemory() de la classe Runtime pour mesurer la mémoire utilisée et la méthode statique System.currentTimeMillis() pour calculer le temps de calcul du programme précédent. N’hésitez pas à consulter la documentation Java pour connaître l’usage exact de ces méthodes. NB : selon la puissance de votre ordinateur, n’hésitez pas à modifier la valeur 9999 pour obtenir des résultats significatifs.

4. Ajouter au programme les instructions nécessaires à la suppression dans la liste des multiples de 3, un par un, dans l’ordre décroissant, de la valeur 9999 jusqu’à 3. Mesurer le temps nécessaire à cette suppression et la mémoire utilisée à la fin de cette suppression. Pourquoi ne revient-on pas à la valeur mémoire initiale ?
Utiliser la méthode gc() de la classe Runtime (voir la documentaion de cette méthode) entre la suppression des éléments de la liste et le calcul de la mémoire utilisée. Que constatez-vous ?

5. Transformez le programme en définissant une méthode statique testCollection(Collection c). Dans le programme principal, lancer cette méthode en lui passant successivement comme paramètre une ArrayList, une LinkedList, un TreeSet puis finalement un HashSet.
Comparer les performances respectives (mémoire et temps de calcul) de ces 4 structures de données. Comment expliquez-vous de telles différences de performances ?

6. Les structures ArrayList et LinkedList semblent moins performantes que les structures Set. Par contre, quels fonctionnalités possèdent les listes que n’ont pas les Set ?
Illustrer ces fonctionnalités en cherchant le 100ème élément de la liste.