:: Enseignements :: Master :: M1 :: 2007-2008 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Implanter une nouvelle collection |
Exercice 1 - J'en veux plus
On cherche à implanter la méthode
twice
qui prend une liste d'entiers et qui renvoie une nouvelle
liste contenant les valeurs de la liste multipliées par
deux.
-
Implanter la méthode
twice
.
-
Changer l'implantation pour allouer moins d'éléments en
utilisant le concept de vue.
Pour l'implantation, regarder du côté de
java.util.AbstractList
.
-
Quel est le problème de votre implantation dans le cas
d'un appel à
twice
avec une
LinkedList
?
Changer l'implantation de
twice
en fonction du fait que la liste prise en paramètre
implante ou non
java.util.RandomAccess
.
Exercice 2 - Pris la main dedans
Il est classique dans plusieurs algorithmes d'utiliser une
structure de données appelée
Bag
. Celle-ci permet de stocker des objets un certain nombre de
fois, la structure garde en mémoire le nombre de fois qu'un
même objet (au sens de
equals
) est stocké.
-
Écrire l'interface
fr.umlv.util.bag.Bag
possédant les méthodes
add
,
remove
et
count
qui respectivement ajoute un objet, retire un objet et
renvoie le nombre d'occurences d'un objet.
- Commenter l'interface écrite.
-
Fournir une implantation
BagImpl
de cette interface permettant d'ajouter et de retirer
des élements en temps constant moyen.
-
Ajouter une méthode
Iterator<Map.Entry<T,Integer>>
iterator()
qui renvoie un itérateur sur les couples (objet, nombre
d'occurences).
-
Faire en sorte que l'on puisse choisir l'ordre des
objets lors de l'itération par une constante lors de la
construction du
Bag
:
Quelles sont les contraintes sur
T
en fonction de la collection utilisée ?
-
Remplacer les constantes passées lors de la construction
par une énumération (
enum
).
-
Discuter de l'utilité d'une enumération abstraite ici.
Implanter la solution proposée.
-
On souhaite que le code suivant marche :
Que doit-on faire ?
-
Pourquoi le code suivant ne marche pas ?
Comment changer le code pour qu'il marche ?
-
De quelle interface des collections en Java peut hériter
l'interface
Bag
.
Quelles sont les problèmes que cela pose par rapport au
code existant ?
-
Faire hériter
Bag
de cette interface et écrire les méthodes manquantes.
© Université de Marne-la-Vallée