:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Java Avancé ::
[LOGO]

Map, list, capture, iterable et iterateur


Exercice 1 - Prendre de la hauteur

Soit la classe fr.umlv.td.author.Author :

Exercice 2 - Capture de carte sauvage

On souhaite implanter un algorithme permettant de répartir une liste dans un ordre aléatoire.

  1. Indiquer un algorithme possible pour cela. Quel est la complexité de celui-ci ?
  2. Implanter une méthode swap suivant la documentation suivante :
  3. Que doit-on changer pour que la méthode swap ait la signature suivante :
  4. 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.
  5. 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 :

  1. Quel est le profil de la méthode rangeIterator ?
  2. Implanter de cette méthode en utilisant une classe anonyme.
On souhaite maintenant pouvoir écrire le code suivant :

  1. Quel est le profil de la méthode range ?
  2. Écrire une implantation utilisant la méthode rangeIterator ainsi qu'une version en une seule méthode.
  3. 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.

  1. Implanter la méthode twice .
  2. 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 .
  3. 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 .