Vous êtes sur la page 1sur 24

Conception Orientée Objet & Programmation JAVA

Chapitre 8 : Les collections (MAP)

ESPRIT - UP JAVA Année universitaire 2020/2021


PLAN
• Introduction
• Classe et objet
• Encapsulation
• Héritage
• Polymorphisme
• Exceptions
• Interfaces
• Collection
• Interface Fonctionnelle
• Expression Lambda
• Stream

2
MAP

3
MAP: Définition

● Une map est une collection qui associe une clé à une valeur ( Map<K,V> ). La clé
est unique, contrairement à la valeur qui peut être associée à plusieurs clés.

● L'interface Map stocke les pairs clé et sa valeur dans une table de hachage.

4
MAP: Définition

● Map peut être implementée avec:

- HashMap: il ne garantie pas l'ordre d'insertion des éléments lors de parcours.

- TreeMap: elle stocke les éléments triés selon leurs valeurs.

● La comparaison utilise l’ordre naturel (interface Comparable<K>) ou une instance de


Comparator<? super K>
5
MAP: les méthodes

6
HashMap

7
Définition

● La classe HashMap présente plusieurs caractéristiques :

- Elle permet l'utilisation de la valeur null comme clé et comme valeur.


- Elle n'est pas thread-safe.
- Elle ne garantit aucun ordre lors du parcours des éléments de la collection.

8
Exemple

9
TreeMap

10
Définition

● La classe TreeMap, ajoutée à Java 1.2, est une Map qui stocke des éléments de
manière triée.

● Les éléments de la collection sont triés selon l'ordre naturel de leur clé (s'ils
implémentent l'interface Comparable) ou en utilisant une instance de type
Comparator fournie au constructeur de la collection.

● Elle implémente les interfaces Map et SortedMap.


11
Exemple 1

12
Exemple 2
Depuis que TreeMap et TreeSet conservent les clés / éléments en fonction de leur
ordre naturel . Les clés TreeMap et les éléments TreeSet doivent donc être
comparables.

SOLUTION 1

13
Exemple 2
Une autre solution consiste à fournir à TreeSet un comparateur :

SOLUTION 2

14
Interface MAP

15
Map.Entry<K,V>

● L’interface Map contient l’interface interne public Map.Entry<K,V> qui correspond à


un couple clé-valeur
● Cette interface contient 3 méthodes

- La méthode entrySet() de Map renvoie un objet de type « ensemble (Set) de Entry »

16
Parcours et récupération des données

● keySet(): qui retourne une collection de type Set<K> lorsque "K" est le type de la clé
de notre Map<K, V>.

● entrySet(): qui retourne elle aussi une implémentation de l'interface Set, mais de type
différent. La collection retournée sera définie ainsi Set<Entry<K, V>>. Ce sera donc
une collection d'objets qui contiendra tous les couples clé - valeur de notre Map

● values(): qui retourne ce type d'objet Collection<String>, c'est-à-dire la liste de nos


17
valeurs.
HashCode

18
HashCode: Définition

La méthode hashcode() est utilisé pour générer une valeur de code de hachage pour
un objet et cette valeur de code de hachage est utilisée par certaines classes de
collection pour comparer des objets, ce qui augmente les performances des grandes

collections d’objets.

19
HashCode: Exemple
@Override

public int hashCode() {

int result = 17;

result = 31 * result + age;

return result;

→ L’utilisation de 31 comme hash est juste pour assurer que la valeur du hashcode sera différent pour
chaque objet. Vous devez calculer le hachage pour différents membres et renvoyer le total sous forme de
code de hachage unique.
20
Comparaison

21
Utiliser LIST, SET ou MAP ?
● Si vous ne souhaitez pas que les valeurs soient dupliquées dans la base de données,
Set doit être votre premier choix, car toutes ses classes n’autorisent pas les
doublons.

● Si des opérations de recherche fréquentes basées sur les valeurs d’index sont
nécessaires, alors List (ArrayList) constitue un meilleur choix.

● S’il est nécessaire de maintenir l’ordre d’insertion, List est également préférée.

● Si l’exigence est d’avoir un mappage clés/valeurs dans la base de données, alors


Map est votre meilleur choix.
22
LIST Vs. SET Vs. MAP

23
Merci pour votre attention

24

Vous aimerez peut-être aussi