Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Les collections d'objets
13/08/2012 Programmation en JAVA Les collections d'objets Présenté par: Abdoulaye FAYE Pape moussa NDIAYE Sous la supervision de: Mme. SANKARE
2
STRUCTURE DE DONNEES C'est l'organisation efficace d'un ensemble de données, sous la forme de tableaux, de listes, de piles etc. Cette efficacité réside dans la quantité mémoire utilisée pour stocker les données, et le temps nécessaire pour réaliser des opérations sur ces données.
3
Collections & Java Une collection gère un groupe d'un ensemble d'objets d'un type donné ; ou bien c'est un objet qui sert à stocker d'autres objets. Dans les premières versions de Java, les collections étaient représentées par les "Array","Vector" etc. Puis avec Java 1.2 (Java 2), est apparu le framWork de collections qui tout en gardant les principes de bases,
4
Collections & Java il a apporté des modifications dans la manière avec laquelle ces collections ont été réalisées et hiérarchisées. Tout en collaborant entre elles, ces collections permettent de réaliser dans des catégories de logiciels des conceptions réutilisables.
5
Collections Framwork de Java
Réparties en deux groupes:
6
3.1. Interfaces Organisées en deux catégories: Collection & Map.
7
Définition des termes:
- Collection: un groupe d'objets où la duplication peut-être autorisée. - Set: est ensemble ne contenant que des valeurs et ces valeurs ne sont pas dupliquées. Par exemple l'ensemble A = {1,2,4,8}. Set hérite donc de Collection, mais n'autorise pas la duplication. SortedSet est un Set trié.
8
- List: hérite aussi de collection, mais autorise la duplication
- List: hérite aussi de collection, mais autorise la duplication. Dans cette interface, un système d'indexation a été introduit pour permettre l'accès (rapide) aux éléments de la liste. - Map: est un groupe de paires contenant une clé et une valeur associée à cette clé. Cette interface n'hérite ni de Set ni de Collection. La raison est que Collection traite des données simples alors que Map des données composées (clé,valeur). SortedMap est un Map trié.
9
3.2. Implémentations
10
Par contre, il n'y a pas d'implémentation de l'interface Collection
Par contre, il n'y a pas d'implémentation de l'interface Collection. Pour Set et Map l'implémentation est soit sous la forme d'une table de hachage (HashSet/HashMap) ou bien sous la forme d'un arbre (TreeSet/TreeMap). Pour la liste: soit sous la forme de tableau (ArrayList) ou une liste chaînée (LinkedList).
11
Itérateurs Un itérateur est un objet qui a pour rôle de parcourir une collection.
12
Les différents types de collections
En se focalisant sur les passage suivant, fort est de constater que les interfaces ont des particularités correspondant à des besoins spécifiques. Les objets Les objets de type List servent à stocker des objets sans condition particulière sur la façon de les stocker. Ils acceptent toutes les valeurs, même les valeurs nulle
13
Les types Set sont un peu plus restrictifs, car ils n’autorisent pas deux fois la même valeur (le même objet), ce qui est pratique pour une liste d’éléments uniques, par exemple les Maps sont particulières, car elles fonctionnent avec un système clé - valeur pour ranger et retrouver les objets qu’elles contiennent. Maintenant que nous avons une brièvement idées les différences entre ces types, voyons comment utiliser ces objets.
14
Les objets List Les objets appartenant à la catégorie List sont, pour simplifier, des tableaux extensibles à volonté. On y trouve les objets Vector, LinkedList et ArrayList. Vous pouvez y insérer autant d’éléments que vous le souhaitez sans craindre de dépasser la taille de votre tableau. Ils fonctionnent tous de la même manière : vous pouvez récupérer les éléments de la liste via leurs indices. De plus, les List contiennent des objets.
15
L’objet LinkedList Une liste chaînée 1 est une liste dont chaque élément est lié aux éléments adjacents par une référence à ces derniers. Chaque élément contient une référence à l’élément précédent et à l’élément suivant, exceptés le premier, dont l’élément précédent vaut null, et le dernier, dont l’élément suivant vaut également null.
16
Voici un petit schéma (figure 2) qui vous permettra de mieux vous représenter le fonctionnement de cet objet :
17
Voici un petit code pour appuyer nos dires :
import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class Test { public static void main(String[] args) { List l = new LinkedList(); l.add(12); l.add("toto ! !"); l.add(12.20f); for(int i = 0; i < l.size(); i++) System.out.println("ÉlØment à l’index " + i + " = " + l.get(i)); }
18
System. out. println("\n \tParcours avec un itérateur "); System. out
System.out.println("\n \tParcours avec un itérateur "); System.out.println(" "); ListIterator li = l.listIterator(); while(li.hasNext()) System.out.println(li.next());
19
Les deux manières de procéder sont analogues !
vu que tous les éléments contiennent une référence à l’élément suivant, de telles listes risquent de devenir particuliŁrement lourdes en grandissant ! Cependant, elles sont adaptées lorsqu’il faut beaucoup manipuler une collection en supprimant ou en ajoutant des objets en milieu de liste.
20
L’objet ArrayList ArrayList est un de ces objets qui n’ont pas de taille limite et qui, en plus, acceptent n’importe quel type de données, y compris null ! Voici un exemple d’illustration avec ArrayList:
21
import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add(12); al.add("Une chaîne de caractères !"); al.add(12.20f); al.add(’d’); for(int i = 0; i < al.size(); i++) { System.out.println("donnØe à l’indice " + i + " = " + al.get(i)); }
22
Si vous exécutez ce code, vous obtiendrez la figure 3
23
il existe tout un panel méthodes fournies avec cet objet :
add() permet d’ajouter un élément ; get(int index) retourne l’élément à l’indice demandé remove(int index) efface l’entrée à l’indice demandé isEmpty() renvoie vrai si l’objet est vide ; removeAll() efface tout le contenu de l’objet ; contains(Object element) retourne vrai si l’élément passé en paramètre est dans l’ArrayList.
24
Contrairement aux LinkedList, les ArrayList sont rapides en lecture, même avec un gros volume d’objets. Elles sont cependant plus lentes si vous devez ajouter ou supprimer des données en milieu de liste. Pour résumer à l’extrême, si vous effectuez beaucoup de lectures sans vous soucier de l’ordre des éléments, optez pour une ArrayList ; en revanche, si vous insérez beaucoup de données au milieu de la liste, optez pour une Linkedlist.
25
Les objets Map Une collection de type Map est une collection qui fonctionne avec un couple clé - valeur. On y trouve les objets Hashtable, HashMap, TreeMap, WeakHashMap. . . La clé, qui sert à identier une entrée dans notre collection, est unique. La valeur, au contraire, peut être associée à plusieurs clés. Ces objets ont comme point faible majeur leur rapport conflictuel avec la taille des données à stocker.
26
En effet, plus vous aurez de valeurs à mettre dans un objet Map, plus celles-ci seront lentes et lourdes : logique, puisque par rapport aux autres collections, il stocke une donnée supplémentaire par enregistrement
27
L’objet Hashtable On peut également dire table de hachage, si on le traduit mot à mot. . . On parcourt cet objet grâce aux clés qu’il contient en recourant à la classe Enumeration. L’objet Enumeration contient notre Hashtable et permet de le parcourir très simplement. Regardez, le code suivant insère les quatre saisons avec des clés qui ne se suivent pas, et notre énumération récupère seulement les valeurs :
28
import java. util. Enumeration; import java. util
import java.util.Enumeration; import java.util.Hashtable; public class Test { public static void main(String[] args) { Hashtable ht = new Hashtable(); ht.put(1, "printemps"); ht.put(10, "été"); ht.put(12, "automne"); ht.put(45, "hiver"); Enumeration e = ht.elements(); while(e.hasMoreElements()) System.out.println(e.nextElement()); }
29
Cet objet nous offre lui aussi tout un panel de méthodes utiles :
isEmpty() retourne vrai si l’objet est vide ; contains(Object value) retourne vrai si la valeur est présente. Identique à containsValue(Object value) ; containsKey(Object key) retourne vrai si la clé passée en paramètre est présente dans la Hashtable ; put(Object key, Object value) ajoute le couple key - value dans l’objet ; elements() retourne une énumération des éléments de l’objet ; keys() retourne la liste des clés sous forme d’énumération.
30
De plus, il faut savoir qu’un objet Hashtable n’accepte pas la valeur null et qu’il est Thread Safe, c’est-à-dire qu’il est utilisable dans plusieurs threads 3 simultanément sans qu’il y ait un risque de conit de données.
31
L’objet HashMap Cet objet ne diŁre que trŁs peu de la Hashtable :
il accepte la valeur null ; il n’est pas Thread Safe. En fait, les deux objets de type Map sont, à peu de choses près, équivalents.
32
Les objets Set Un Set est une collection qui n’accepte pas les doublons. Les Set sont particulièrement adaptés pour manipuler une grande quantité de données. Cependant, les performances de ceux-ci peuvent être amoindries en insertion. Généralement, on opte pour un HashSet
33
L’objet HashSet C’est sans nul doute la plus utilisée des implémentations de l’interface Set. On peut parcourir ce type de collection avec un objet Iterator ou extraire de cet objet un tableau d’Object :
34
Illustration par à l’aide de ce code ci-après:
import java.util.HashSet; import java.util.Iterator; public class Test { public static void main(String[] args) { HashSet hs = new HashSet(); hs.add("toto"); hs.add(12); hs.add(’d’); Iterator it = hs.iterator(); while(it.hasNext()) System.out.println(it.next()); System.out.println("\nParcours avec un tableau d’objet"); System.out.println(" "); Object[] obj = hs.toArray(); for(Object o : obj) System.out.println(o); }
35
Voici une liste des méthodes que l’on trouve dans cet objet :
add() ajoute un ØlØment ; contains(Object value) retourne vrai si l’objet contient value ; isEmpty() retourne vrai si l’objet est vide ; iterator() renvoie un objet de type Iterator ; remove(Object o) retire l’objet o de la collection ; toArray() retourne un tableau d’Object.
36
CONCLUSION Une collection permet de stocker un nombre variable d’objets. Ainsi, à la suite de notre étude, on constate principalement trois types de collection : les List, les Set et les Map. Chaque type a ses avantages et ses inconvénients. Les Collection stockent des objets alors que les Map stockent un couple clé - valeur. L’insertion fréquemment des données en milieu de liste, nécessite l’utilisation de LinkedList. L’accès ou la rechercher à une valeur par une clé de recherche s’effectue via une collection de type Map. En fin le traitement d’une grande quantité de données fait appel à une liste detype Set.
37
sources et les notes de cours du Prof. Moussa LO.
38
MERCI DE VOTRE AIMABLE ATTENTION
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.