Gestion des Collections et des Maps en Java.
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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
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