La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Les collections d'objets Présenté par: Abdoulaye FAYE Pape moussa NDIAYE Sous la supervision de: Mme. SANKARE Programmation en JAVA 13/08/2012.

Présentations similaires


Présentation au sujet: "Les collections d'objets Présenté par: Abdoulaye FAYE Pape moussa NDIAYE Sous la supervision de: Mme. SANKARE Programmation en JAVA 13/08/2012."— Transcription de la présentation:

1 Les collections d'objets Présenté par: Abdoulaye FAYE Pape moussa NDIAYE Sous la supervision de: Mme. SANKARE Programmation en JAVA 13/08/2012

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. 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. 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 nautorisent 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 quelles 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 Lobjet 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 à lindex " + i + " = " + l.get(i)); }

18 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 lorsquil faut beaucoup manipuler une collection en supprimant ou en ajoutant des objets en milieu de liste.

20 Lobjet ArrayList ArrayList est un de ces objets qui nont pas de taille limite et qui, en plus, acceptent nimporte quel type de données, y compris null ! Voici un exemple dillustration 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 à lindice " + 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 dajouter un élément ; get(int index) retourne lélément à lindice demandé remove(int index) efface lentrée à lindice demandé isEmpty() renvoie vrai si lobjet est vide ; removeAll() efface tout le contenu de lobjet ; contains(Object element) retourne vrai si lélément passé en paramètre est dans lArrayList.

24 Contrairement aux LinkedList, les ArrayList sont rapides en lecture, même avec un gros volume dobjets. Elles sont cependant plus lentes si vous devez ajouter ou supprimer des données en milieu de liste. Pour résumer à lextrême, si vous effectuez beaucoup de lectures sans vous soucier de lordre 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 Lobjet Hashtable On peut également dire table de hachage, si on le traduit mot à mot... On parcourt cet objet grâce aux clés quil contient en recourant à la classe Enumeration. Lobjet 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.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 lobjet 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 lobjet ; elements() retourne une énumération des éléments de lobjet ; keys() retourne la liste des clés sous forme dénumération.

30 De plus, il faut savoir quun objet Hashtable naccepte pas la valeur null et quil est Thread Safe, cest-à- dire quil est utilisable dans plusieurs threads 3 simultanément sans quil y ait un risque de conit de données.

31 Lobjet HashMap Cet objet ne diŁre que trŁs peu de la Hashtable : il accepte la valeur null ; il nest 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 naccepte 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 Lobjet HashSet Cest sans nul doute la plus utilisée des implémentations de linterface Set. On peut parcourir ce type de collection avec un objet Iterator ou extraire de cet objet un tableau dObject :

34 Illustration par à laide 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 dobjet"); System.out.println(" "); Object[] obj = hs.toArray(); for(Object o : obj) System.out.println(o); }

35 Voici une liste des méthodes que lon trouve dans cet objet : add() ajoute un ØlØment ; contains(Object value) retourne vrai si lobjet contient value ; isEmpty() retourne vrai si lobjet est vide ; iterator() renvoie un objet de type Iterator ; remove(Object o) retire lobjet o de la collection ; toArray() retourne un tableau dObject.

36 CONCLUSION Une collection permet de stocker un nombre variable dobjets. 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. Linsertion fréquemment des données en milieu de liste, nécessite lutilisation de LinkedList. Laccès ou la rechercher à une valeur par une clé de recherche seffectue via une collection de type Map. En fin le traitement dune grande quantité de données fait appel à une liste detype Set.

37 sources s/Collection.html et les notes de cours du Prof. Moussa LO.

38 MERCI DE VOTRE AIMABLEATTENTION


Télécharger ppt "Les collections d'objets Présenté par: Abdoulaye FAYE Pape moussa NDIAYE Sous la supervision de: Mme. SANKARE Programmation en JAVA 13/08/2012."

Présentations similaires


Annonces Google