:: Enseignements :: ESIPE :: E3INFO :: 2009-2010 :: Programmation Objet avec Java ::
[LOGO]

Table de hachage, Liste et Expression Régulière


Exercice 1 - Association et contrat sur les Objets

Sachant que la classe Pair est définie comme ceci :
     public class Pair {
       private final String first;
       private final String second;

       public Pair(String first, String second) {
         this.first=first;
         this.second=second;
       }
       public String getFirst() {
         return first;
       }
       public String getSecond() {
         return second;
       }
       @Override
       public String toString() {
         return first+" "+second;
       }
     }
     
Pourquoi le code ci-dessous n'affiche pas ce qu'il faut ?
    HashMap<Pair,String> map=new HashMap<Pair,String>();
    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);
   
Que doit-on faire pour résoudre le problème ?

Exercice 2 - Performance sur les listes

Le but de cet exercice est de tester les différences de performance entre les classes ArrayList et LinkedList sur différents algorithmes.

  1. Nous allons dans un premier temps chronométrer le temps d'un parcours d'une ArrayList contenant un million (1 000 000) d'entiers en utilisant un Iterator puis un index pour le parcours.
    Utilisez la méthode System.nanoTime() pour effectuer une mesure de temps.
  2. Modifier votre programme pour pouvoir facilement chronométrer le parcours dans le cas d'une ArrayList ou d'une LinkedList avec le même code.
Effectuer les tests suivants sur les deux implémentations de List : Comparer les différents résultats et expliquer les différences.

Exercice 3 - Pattern Matching

Le but de cette exercice est la manipulation d'expression régulière en Java. Nous utiliserons pour cela les classes du paquetage java.util.regex.

  1. A quoi sert la classe java.util.regex.Pattern et sa méthode compile ?
    A quoi sert la classe java.util.regex.Matcher ?
  2. Ecrire un programme qui lit des chaines de caractères sur la ligne de commande et affiche les chaines qui correspondent à des nombres. C'est à dire les chaines dont tous les caractères sont compris entre '0' et '9'.
  3. Modifier le programme pour que si une chaine de caractère commence par des caractères qui ne sont pas des chiffres, ceux-ci ne soit pas pris en compte.
  4. Ecrire une méthode qui prend en paramètre une chaine de caractère contenant une adresse IPv4 et renvoie un tableau de 4 bytes.
    Vous utiliserez pour cela la notion de groupe.