Gestion des Collections et des Maps en Java.

La page est créée Stéphane Bruneau
 
CONTINUER À LIRE
Gestion des Collections et des Maps en Java.
Gestion des Collections et des Maps en Java.

Christophe Gravier, Frédérique Laforest, Julien Subercaze

                    Télécom Saint-Étienne
                   Université Jean Monnet

               {prénom.nom}@univ-st-etienne.fr

                FI2_INFO4 20122013

                                                            1 / 19
Gestion des Collections et des Maps en Java.
Plan

Objectifs

Collections

Maps

Généricité

                     2 / 19
Objectifs pédagogiques

Obligatoires
  I   Manipulation de collections avec le framework fourni par le
      JDK 7
  I   Manipulation de Maps avec le framework fourni par le JDK 7

Optionnel
  I   Utilisation de l'implémentation fournie par Google (Guava).

                                                                    3 / 19
Plan

Objectifs

Collections

Maps

Généricité

                     4 / 19
Dénition

Dénition
Une collection représente un groupement d'objet, que l'on appelle
éléments. Les collections sont utilisées pour stocker, manipuler et
communiquer des données groupées.

Exemples
  I   Une main au poker : collection de cartes
  I   Une boite mail : collection de mails

Déjà vu
  I   Vector en C++

                                                                      5 / 19
Framework

Dénition
Un framework de collection est une architecture uniée pour
manipuler les collections, cela comprend dans le cas du JDK7 :
   Interfaces Types de données abstraits permettant de manipuler
              les données sans se soucier de leur représentation
              interne.
Implémentations Mise en ÷uvre des interfaces. Ce sont des
              structures de données réutilisables.
 Algorithmes Ce sont les méthodes utilisées pour eectuer des
              opérations telles que : rechercher, trier, etc. Les
              algorithmes sont des fonctionnalités réutilisables.

                                                                    6 / 19
Pourquoi utiliser un Framework

Avantages

     Rapidité Ne pas réinventer la roue, les collections sont des
               briques de base indispensable.
      Qualité L'architecture et sa mise en ÷uvre sont de grande
               qualité. Le framework est plus ecace et de meilleure
               qualité que si on l'avait programmé soi-même.
Interopérabilité Permet la réutilisation entre diérents programmes
               et API.

                                                                       7 / 19
Exemple

1    package fr . tse . info ;
2
3    import java . util . Collection ;
4    import java . util . Vector ;
5
6    public class Exemple1 {
7
8        public static void main ( String [] args ) {
9          Collection < String > macollection = new Vector < >();
10         macollection . add ( " Hello " );
11         macollection . add ( " world " );
12         System . out . println ( macollection );
13       }
14   }

     Sortie écran
     [Hello, world]
                                                              8 / 19
Les diérentes interfaces
Collection
      List Collection ordonnée, aussi appellée séquence. Vector
           vu précédemment en est un exemple.
     Queue Collection pour la gestion d'éléments avant leur
           traitement. Exemples : le d'attente LIFO, FIFO ou
           avec un tri déni.
       Set Ensemble d'élément non ordonné, un élément peut
           être présent une ou plusieurs fois selon les mises en
           ÷uvre.
 SortedSet Ensemble d'éléments triés selon un tri déni.

Iterable
Toutes les collections en JAVA sont Iterable, c'est-à-dire qu'elles
fournissent un objet de type Iterator qui permet d'itérer sur les
éléments de la collection.
                                                                      9 / 19
Exemples d'implémentations : List

Implémentations de List
L'interface List est implémentée par diérentes classe, en voici
quelques unes des plus courantes :
 ArrayList Liste stockée dans un tableau, dont la taille augmente
               au besoin. La capacité par défaut est de 10 (Source,
               ligne 139).
LinkedList Liste doublement chaînée (avant, arrière).
     Vector Idem que LinkedList mais synchronisée, c'est-à-dire
               supportant le multi-processus.

                                                                      10 / 19
Exemples d'algorithmes : Collections

1    public static void main ( String [] args ) {
2        List < String > maliste = new ArrayList < >();
3        // Ajoute a ,z ,e ,r ,t , y
4        maliste . add ( " a " );
5        maliste . add ( " z " );
6        maliste . add ( " e " );
7        maliste . add ( " r " );
8        maliste . add ( " t " );
9        maliste . add ( " y " );
10       System . out . println ( " Liste : " + maliste );
11       Collections . reverse ( maliste ); // renverse
12       System . out . println ( " Inversée : " + maliste );
13       Collections . shuffle ( maliste ); // aléatoire
14       System . out . println ( " Aléatoire : " + maliste );
15       Collections . sort ( maliste ); // trie
16       System . out . println ( " Triée : " + maliste );
17   }

                                                                 11 / 19
Algorithmes

Algorithmes pour les collections
La classe Collections fournit de nombreuses méthodes utiles
comme nous l'avons vu dans l'exemple précédent:
          Tri en utilisant le comparateur fourni ou un déni
  Recherche éléments min/max, trouver un élément
Transformation inverser, ordre aléatoire, synchroniser, copier

Autres implémentations
D'autres frameworks complémentaires permettent d'eectuer de
nombreuses autres opérations :
  I Apache Commons Collections
  I Google Guava

                                                                 12 / 19
Plan

Objectifs

Collections

Maps

Généricité

                     13 / 19
Maps
Dénition
Une Map est un objet qui lie des clés à des valeurs. Une Map ne peut
pas contenir de clés dupliquées, chaque clé est lié à au plus une
valeur. Mathématiquement une Map modélise une fonction.
Méthodes de base
put(K key, V value) ajoute une paire clé/valeur dans la Map.
get(Object key) retourne la valeur associée à la clé.
remove(Object key) supprime le mapping d'une clé.
    keySet() retourne un Set contenant l'ensemble des clés.
       size() retourne le nombre de mapping clé/valeur dans la
              Map.

Implémentation
Il existe de nombreuses implémentations de l'interface Map, on
utilise habituellement HashMap                                         14 / 19
Exemple 3 : Maps
1    public static void main ( String [] args ) {
2      // Initialise la table des fréquences
3      Map < String , Integer > m = new HashMap < String , Integer >();
4        for ( String a : args ) {
5            Integer freq = m . get ( a );
6            m . put (a , ( freq == null ) ? 1 : freq + 1);
7      }
8      System . out . println ( m . size () + " mots distincts : " );
9      System . out . println ( m );
10   }

     Sortie écran avec l'argument
     "bonjour ceci est un exemple d'utilisation de Map. Map est une
     interface très utile."
     13 mots distincts :
     {d'utilisation=1, Map.=1, Map=1, utile.=1, interface=1, un=1,
     très=1, de=1, est=2, exemple=1, une=1, bonjour=1, ceci=1}
                                                                      15 / 19
Diagramme des classes du framework Collection

                                                16 / 19
Plan

Objectifs

Collections

Maps

Généricité

                     17 / 19
Généricité
Types génériques
Dans les exemples précédents, nous avons vu que les collections et
maps étaient paramétrées par des types, par exemple
Collection ou encore Map.
Avantages
  I   Les types génériques permettent d'éviter de nombreuses
      erreurs de transtypage à l'exécution, par rapport à l'utilisation
      de collections non typées.
  I   Ils permettent au programmeur d'implémenter des algorithmes
      génériques.

Utilisation
  Invocation List maListe
Instantiation List maListe = new List();
                                                                          18 / 19
The End

          19 / 19
Vous pouvez aussi lire