:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Map, list, capture, iterable et iterateur |
Exercice 1 - Prendre de la hauteur
Soit la classe
fr.umlv.td.author.Author
:
-
Expliquer ce que fait le code ci-dessous :
-
Faites les changements qui s'imposent pour que le code marche
de façon plus logique.
-
Notez que
Author
est non mutable,
comment peut-on faire pour accélérer les accès à la table de hachage
sachant cela ?
Exercice 2 - Capture de carte sauvage
On souhaite implanter un algorithme permettant de répartir
une liste dans un ordre aléatoire.
-
Indiquer un algorithme possible pour cela.
Quel est la complexité de celui-ci ?
-
Implanter une méthode
swap
suivant la documentation suivante :
-
Que doit-on changer pour que la méthode
swap
ait la signature suivante :
-
Ecrire une méthode
shuffle
utilisant la méthode
swap
pour permuter les valeurs.
La classe
java.util.Random
est un générateur pseudo-aléatoire.
-
En supposant que l'on veuille répartir les élements de façon aléatoire
entre deux listes, expliquer pourquoi la capture ne marche pas
avec une méthode ayant la signature suivante :
Exercice 3 - Interval
On souhaite pouvoir écrire le code suivant :
-
Quel est le profil de la méthode
rangeIterator
?
-
Implanter de cette méthode en utilisant une classe anonyme.
On souhaite maintenant pouvoir écrire le code suivant :
-
Quel est le profil de la méthode
range
?
-
Écrire une implantation utilisant la méthode
rangeIterator
ainsi qu'une version en une seule méthode.
-
Combien le code donné en exemple effectue-t-il d'allocations ?
Et le code ci-dessous ?
Exercice 4 - 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
.
© Université de Marne-la-Vallée