:: Enseignements :: Master :: M1 :: 2014-2015 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Set et List |
Implantation des interfaces
Set et
List.
Exercice 1 - Sets et read-only Set
Le but de cet exercice est d'écrire des méthodes qui renvoie des vues
non modifiables d'ensemble.
-
Rappeler ce qu'est un ensemble java.util.Set.
-
A quoi sert la classe java.util.AbstractSet
et quelles sont les méthodes qui doivent être implantées.
-
Ecrire dans une classe fr.umlv.colls.Sets,
une méthode asReadOnlySet qui prend un Set
et renvoie un Set non modifiable.
Vérifier que votre implantation est bonne avec le test unitaire suivant:
SetsTest.java.
-
Ecrire une méthode asReadOnlyEntrySet qui prend une
java.util.Map en paramètre et renvoie un Set
non modifiable des couples clés/valeurs.
Pourquoi ne peut-on pas appeler la méthode asReadOnlySet avec map.entrySet() ?
Conseil: regarder la javadoc de java.util.Map.Entry.
-
On remarque que le code de asReadOnlySet et de
asReadOnlyEntrySet est franchement similaire,
comment faire un seul code commun qui pourra être utilisée
par les deux méthodes.
Exercice 2 - Lists
Le but de cet exercice est d'écrire deux méthodes statiques renvoyant des listes
particulières à l'intérieur d'une classe fr.umlv.colls.Lists.
-
Rappeler à quoi servent les classes AbstractList, AbstractSequentialList
et RandomAccess.
-
Ecrire une méthode range qui prend, en paramètre, un index start
et un index end et qui renvoie une liste dont les éléments sont les éléments
compris entre start et end (start et end étant inclues).
L'astuce est que l'on n'est pas obligé de stocker les éléments entre start et end.
On peut juste faire en sorte que l'implantation renvoie les éléments
entre start et end.
Vérifier que votre implantation est bonne avec le test unitaire suivant:
ListsTest.java.
-
On souhaite maintenant écrire une méthode times qui prend en paramètre
un multiplicateur et une liste d'entiers, et qui renvoie une nouvelle liste
où chaque entier à la position i a pour valeur l'entier à la position
i dans la liste passée en paramètre multipliée par le multiplicateur.
-
Expliquer pourquoi le test slooowTimes timeout ?
Comment corriger le problème ?
-
Implanter la solution retenue.
© Université de Marne-la-Vallée