:: Enseignements :: Licence :: L3 :: 2013-2014 :: Programmation Objet avec Java ::
[LOGO]

Table de hachage, itérateur, liste


Exercice 1 - Association et contrat sur les Objets

Sachant que la classe Pair est définie comme ceci :
     public class Pair<U, V> {
       private final U first;
       private final V second;

       public Pair(U first, V second) {
         this.first = first;
         this.second = second;
       }
       public U getFirst() {
         return first;
       }
       public V getSecond() {
         return second;
       }
       @Override
       public String toString() {
         return first + " " + second;
       }
     }
     
  1. Pourquoi le code ci-dessous n'affiche pas ce qu'il faut ?
          HashMap<Pair<String,String>,String> map=new HashMap<>();
          map.put(new Pair<>("jean-paul","sartre"),"mort");
          map.put(new Pair<>("elvis","presley"),"vivant");
    
          map.remove(new Pair<>("elvis","presley"));
    
          System.out.println(map);
         
  2. Que doit-on faire pour résoudre le problème ?
  3. Et dans ce cas ?
          map.put(new Pair<String,String>(null, null),"mort");
         
    Est-ce normal ?
    Que doit-on corriger ?

Exercice 2 - Performance sur les listes

Le but de cet exercice est de tester les différences de performances entre les classes ArrayList et LinkedList suivant la méthode de parcours utlisée. Attention, le même code devra permettre de tester les 2 types de listes!

  1. Nous allons dans un premier temps chronométrer le temps d'un parcours d'une List contenant un million (1 000 000) d'entiers en utilisant un Iterator.
    Utilisez la méthode System.nanoTime() pour effectuer une mesure de temps.
  2. Avez-vous pensé à tester plusieurs fois la même boucle...?
Modifier votre programme pour pouvoir effectuer les tests suivants sur les deux implémentations de List : Comparer les résultats et expliquer les différences.