0% ont trouvé ce document utile (0 vote)
36 vues40 pages

Collections en Java par Noreddine Gherabi

Le document décrit les différents types de collections en Java, notamment les Listes (ArrayList, LinkedList), les Ensembles (HashSet, LinkedHashSet, TreeSet) ainsi que leurs méthodes et fonctionnalités.

Transféré par

Nessrine Lafhal
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
36 vues40 pages

Collections en Java par Noreddine Gherabi

Le document décrit les différents types de collections en Java, notamment les Listes (ArrayList, LinkedList), les Ensembles (HashSet, LinkedHashSet, TreeSet) ainsi que leurs méthodes et fonctionnalités.

Transféré par

Nessrine Lafhal
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

POO

Partie III
Les collections

Noreddine Gherabi
Les collections / Map
Introduction

3
Noreddine GHERABI ENSA Khouribga
Introduction

4
Noreddine GHERABI ENSA Khouribga
Introduction

5
Noreddine GHERABI ENSA Khouribga
Types des collections

6
Noreddine GHERABI ENSA Khouribga
Collection List

7
Noreddine GHERABI ENSA Khouribga
Collection List

ArrayList <E> v1 = new ArrayList <E> (); // vecteur


dynamique vide
ou
ArrayList <E> v2 = new ArrayList <E> (c);
/* vecteur dynamique contenant tous les éléments de la
collection c */

8
Noreddine GHERABI ENSA Khouribga
Collection List

9
Noreddine GHERABI ENSA Khouribga
Collection List

Exemple :

10
Noreddine GHERABI ENSA Khouribga
Collection List

Autres méthodes de ArrayList

11
Noreddine GHERABI ENSA Khouribga
Collection List

Les itérateurs
v Les itérateurs sont des objets qui permettent de "parcourir" un
par un les différents éléments d’une collection. Ils ressemblent
à des pointeurs (tels que ceux de C ou C++) sans en avoir
exactement les mêmes propriétés.
v Il existe deux sortes d’itérateurs :
§ Monodirectionnels : le parcours de la collection se fait
d’un début vers une fin ; on ne passe qu’une seule fois sur
chacun des éléments ;
§ Bidirectionnels : le parcours peut se faire dans les deux
sens ; on peut avancer et reculer à sa guise dans la
collection.

12
Noreddine GHERABI ENSA Khouribga
Collection List

Les itérateurs : Interface Iterator

v Implémentée par la plupart des collections


v permettant de parcourir une collection
v Les méthodes de Iterator :
§ hasNext() : retourne true si l’itérateur contient
d’autres éléments
§ next() : retourne l’élément suivant de l’itérateur
§ remove() : supprime le dernier objet obtenu par
next() ...

13
Noreddine GHERABI ENSA Khouribga
Collection List

Les itérateurs : Interface Iterator

Exemple :

14
Noreddine GHERABI ENSA Khouribga
Collection List

Exercice

Ecrire un programme qui :


§ Demande a l’utilisateur de saisir des nombres, quand il saisit 0 le programme
s’arrête
§ Demande à l’utilisateur une valeur à chercher
§ Demande à l’utilisateur une valeur à supprimer
§ Demande à l’utilisateur de saisir une valeur et le programme affiche sa position
dans la liste

15
Noreddine GHERABI ENSA Khouribga
Collection List

LinkedList

Listes doublement chaînées


• La liste peut être parcourue par un itérateur bidirectionnel
ListIterator ( même chose que ArrayList)
• Ajout et suppression d’un élément à une position donnée
• Accès d’un élément en fonction de sa valeur: nécessite le
parcours de la liste
Utilisation :
la classe LinkedList se prête bien à l’implémentation des
collections ordonnées, c’est-à-dire :
❖ pile
❖ queue (file d’attente)
❖ séquence

16
Noreddine GHERABI ENSA Khouribga
Collection List

LinkedList

• Pour créer une liste LinkedList


LinkedList<E> l1 = new LinkedList<E> (); // liste vide
Ou
LinkedList<E> l2 = new LinkedList<E> (c); /* liste contenant tous les
éléments de la collection c */

• Ajout d’un élément E e au début / fin de la liste


[Link](elem); [Link](elem);

• Accès au premier / dernier élément de la liste


E e = [Link](); e = [Link]();
• Suppression du premier / ième / dernier élément
e = [Link](); e = [Link](i); e = [Link]()

17
Noreddine GHERABI ENSA Khouribga
Collection List

LinkedList – Construction d’une liste

• On peut utiliser la généricité pour imposer un type à la liste

LinkedList<Integer> liste = new LinkedList<Integer>();


Ou :
List<Integer> liste = new LinkedList<Integer>();

• Même chose pour ArrayList


List<Integer> liste = new ArrayList<Integer>();

• Pour convertir le tableau tab en liste


Integer [] tab = { 2, 3, 5, 1, 9 };
List<Integer> liste = new LinkedList([Link](tab));
Ou tout simplement :
List<Integer> ent = [Link](tab);

18
Noreddine GHERABI ENSA Khouribga
Collection List

LinkedList
Exemple :

19
Noreddine GHERABI ENSA Khouribga
Collection Set

20
Noreddine GHERABI ENSA Khouribga
Collection Set

HashSet

Une collection non ordonnée d’éléments de type E, aucun élément ne


peut apparaître plus d’une fois dans un ensemble (pas de duplication)
Problème: comme deux objets distincts ont des références différentes, on
ne pourra jamais avoir deux objets égaux même si toutes leurs valeurs
sont identiques
-> Il faudra définir un comparateur qui sera capable de tester l’égalité de
deux objets (equals et compareTo)
Même s’il n’existe pas d’ordre dans un ensemble, l’implémentation
informatique s’appuie sur une organisation des éléments afin de garantir
un accès efficace.
L’utilisateur devra définir, pour l’utilisation d’un
❖ HashSet -> les méthodes hashCode et equals dans la classe
des éléments E
❖ TreeSet -> la méthode compareTo dans la classe E

21
Noreddine GHERABI ENSA Khouribga
Collection Set

HashSet

• Pour créer une liste HashSet


HashSet<E> e1 = new HashSet<E> (); // ensemble vide
ou
HashSet<E> e2 = new HashSet<E> (c); /* ensemble contenant tous les
éléments de la collection c */

• Ajout d’un élément E elem dans la liste


boolean nouveau = [Link](elem); // true si elem a été ajouté
if (nouveau) [Link](elem + « ajouté à l’ensemble »);
• contains – test d’appartenance
boolean appartient = [Link](elem); // elem appartient-il à e ?
• remove – suppression d’un élément
boolean trouve = [Link](elem); //false si elem n’appartient pas à e

22
Noreddine GHERABI ENSA Khouribga
Collection Set

HashSet
Exemple :

Résultat : c
69
bonjour

23
Noreddine GHERABI ENSA Khouribga
Collection Set

HashSet

difficiles a connaitre

Pour avoir un affichage ordonné selon l’ordre d’insertion, on peut utiliser


LinkedHashSet

24
Noreddine GHERABI ENSA Khouribga
Collection Set

HashSet

Exemple: conversion de HashSet en tableau

Résultat : c
69
bonjour

25
Noreddine GHERABI ENSA Khouribga
Collection Set

LinkedHashSet
LinkedHashSet est utilisée pour avoir un affichage ordonné selon l’ordre d’insertion

Exemple: conversion de LinkedHashSet en tableau

Résultat : bonjour
69
c

26
Noreddine GHERABI ENSA Khouribga
Collection Set

TreeSet

• Il s’agit d’un arbre qui représente un ensemble trié des éléments


• Cette classe permet d’insérer des éléments dans n’importe quel ordre
et de restituer ces éléments dans un ordre précis lors de son parcours.
• L’implémentation de cette classe insère un nouvel élément dans
l’arbre à la position correspondante à celle déterminée par l’ordre de
tri.
• L’insertion dans un objet TreeSet est plus lente mais le tri est
directement effectué.
• L’ordre est indiqué soit par les objets insérés (s’ils implémente
l’interface Comparable pour définir leur ordre de tri naturel) soit par
un objet implémentant Comparator qui est passé comme paramètre
au constructeur de l’objet TreeSet.

27
Noreddine GHERABI ENSA Khouribga
Collection Set

TreeSet

28
Noreddine GHERABI ENSA Khouribga
Collection Set

TreeSet
Exemple :

Affichage :
2
5
8

29
Noreddine GHERABI ENSA Khouribga
Collection Set

Exercice

Ecrire un programme qui :


§ Demande a l’utilisateur de saisir des valeurs dans une liste (Liste1) de type Set
§ Tester si la liste est vide
§ Demande à l’utilisateur de saisir une autre liste (Liste2)
§ Tester si la liste 1 contient tous les éléments de la liste 2
§ Dans la liste 1 garder seulement les éléments en commun entre les deux listes
( Intersection entre les deux listes)
§ Dans la liste 1 supprimer tous les éléments qui appartient à liste 2

Utiliser les méthodes : RemoveAll(), containsAll(), retainAll(), isEmpty()

30
Noreddine GHERABI ENSA Khouribga
Map

q Fonction (Map ) = ensemble de paires (clé, valeur)


q Notion proche de la fonction au sens mathématique
q En informatique, la fonction est aussi appelée tableau associatif
q En Java, les collections de type fonction, sont définies à partir de la
racine Interface Map <K, V> ( et non Collection <E> )
q Accès rapide à une valeur en fonction d’une clé
q Techniquement réalisé par une table de hachage sur le domaine des
clés
q Tout comme pour un HashSet, l’utilisateur doit définir les méthodes
hashCode et equals dans la classe des clés K.
q Remarque: si K est la classe String, hashCode et equals sont déjà
définies -> l’utilisateur n’a pas besoin de les redéfinir

31
Noreddine GHERABI ENSA Khouribga
Map

HashMap : Liste non ordonée


LinkedHashMap : Liste ordonnée selon l’ordre d’insertion
TreeMap : Liste ordonnée selon l’ordre naturel

32
Noreddine GHERABI ENSA Khouribga
Map

Hashtable

par contre hashmap accepte les valeurs null

Noreddine GHERABI ENSA Khouribga


Map

Hashtable

Exemple :

Affichage : Remarque
C++
Pascal put ajoute la valeur si la clé n’existe pas,
PHP Sinon il modifie l’ancienne valeur.
Java

Noreddine GHERABI ENSA Khouribga


Map

Hashtable

Autres méthode de Hashtable:

Noreddine GHERABI ENSA Khouribga


Map

HashMap

36
Noreddine GHERABI ENSA Khouribga
Map

HashMap – Quelques Méthodes

• Pour créer une liste HashMap

HashMap <K, V> m = new HashMap <K, V> (); // map vide
Exemple : HashMap <String,Integer> m = new HashMap <String,Integer>();

• put - ajout d’une paire


[Link](cle, val); // où cle objet de K, val objet de V
Exemple: [Link](‘’Ahmed’’, 1);

• get - accès la valeur associée à une clé


V val = [Link](cle);
if (val == null) [Link](« aucune valeur associée ala clé»)
remove - suppression d’une paire en foction de la valeur de clé
String cle =‘’Ahmed’’; // par exemple
V val = [Link](cle);

37
Noreddine GHERABI ENSA Khouribga
Map

HashMap
• Fonctions :
§ En théorie une map ne dispose pas d’itérateur
§ En pratique, on utilise la méthode entrySet() défine dans la classe
HashMap pour créer un ensemble à partir du map (l’ensemble des paires
du map); puis on crée un itérateur sur cet ensemble.

Noreddine GHERABI ENSA Khouribga


Map

HashMap
• Fonctions :
Pour afficher la clé et la valeur, on peut utiliser Entry

Exemple :

Noreddine GHERABI ENSA Khouribga


Map

Exercice
Ecrire un programme qui :
§ Demande a l’utilisateur de saisir des valeurs dans une liste HashMap
§ Afficher la valeur d’une clé donnée
§ Supprimer un élément en donnant sa clé
§ Tester si la liste vide ou non
§ Rechercher un élément dans liste en donnant sa clé
§ Rechercher un élément dans liste en donnant sa valeur
§ Afficher toutes les valeurs de la liste
§ Afficher toutes les clés de la liste
§ Créer une deuxième liste HashTable puis afficher ses éléments en utilisation
une Enumération
§ Ajouter tous les éléments de la deuxième liste HashTable dans la première
liste HashMap
Utiliser les méthodes :
Remove, KeySet, KeyValues, isEmpty, containsKey, ContainsValue, put, putAll …

Noreddine GHERABI ENSA Khouribga

Vous aimerez peut-être aussi