:: Enseignements :: ESIPE :: E4INFO :: 2011-2012 :: Java Avancé ::
[LOGO]

Examen de Java Avance


Quelques conseils avant de commencer, prenez le temps de lire entièrement le sujet, si vous ne comprenez pas quelque chose essayez de faire un dessin, si des tests JUnits ne compilent pas, cela veut dire que la signature de votre méthode n'est pas la bonne (il n'y a pas de méthode surchargée dans le sujet à part celles de l'API bien sûr), si un test JUnit ne marche pas et que vous ne comprenez pas pourquoi, relisez la doc de la méthode que vous devez implanter plutôt que d'écrire la méthode pour qu'elle passe le test.

Exercice 1 - MultiMap

Le but de cet exercice est d'implanter une MultiMap, qui est une sorte de Map mais qui accepte plusieurs valeurs pour une même clé stockées dans l'ordre d'insertion dans une liste. En fait, on peut voir une MultiMap comme une Map dont les valeurs sont des List donc pour une clé.
Une MultiMap ne devra jamais stocker null que cela soit en tant que clé ou en tant que valeur.

L'interface de fr.umlv.exam2.MultiMap est la suivante

  • La méthode size renvoie le nombre total de couples insérés dans la MultiMap. Notez que le nombre de clés de la MultiMap sera toujours inférieur ou égal à size.
  • La méthode get prend en paramètre une clé et renvoie une liste contenant la liste des valeurs qui ont pour clé la clé recherchée. Si la clé demandée ne possède aucune valeur, la méthode get devra renvoyer une liste vide.
  • La méthode add ajoute un couple clé/valeur à la MultiMap, s'il existe déjà des valeurs pour la clé, la nouvelle valeur sera ajoutée à la fin de la liste des valeurs déjà existantes.

On appelera MultiMapImpl le nom de classe implantant l'interface MultiMap et celle-ci ne devra en aucun cas être visible par un utilisateur externe, pour cela, MultiMapImpl devra être implanter en tant que classe interne de la classe MultiMaps qui elle contiendra une méthode statique permettant de créer des MultiMap.

Le test JUnit est ici MultiMapTest.java. Attention, cette classe utilise son propre package fr.umlv.exam2.test et non pas celui de MultiMap.