COLLECTIONS
2K2O/21 TBM 190
Définition
§ L’API collections en java est un ensemble d'interfaces et classes qui aident à
stocker, ordonner et traiter les données efficacement.
§ Une structure collective implante une collection
− Plusieurs implantations possibles
• ordonnées ou non, avec ou sans doublons, ...
• accès, recherche, tris (algorithmes) plus ou moins efficaces
§ Les classes et les interfaces de l’API se trouvent dans le paquetage :
[Link].
− possède deux grandes familles chacune définies par une interface :
• [Link] : pour gérer un groupe d'objets
• [Link] : pour gérer des éléments de type paires de clé/valeur
2K2O/21 TBM 191
API Collections : Hiérarchie (1/3)
2K2O/21 TBM 192
API Collections : Hiérarchie (2/3)
§ Les interfaces à utiliser par des objets qui gèrent des collections sont :
− Collection : interface qui est implémentée par la plupart des objets qui gèrent des
collections
− Map : interface qui définit des méthodes pour des objets qui gèrent des collections
sous la forme clé/valeur
− Set : interface pour des objets qui n'autorisent pas de doublons dans l'ensemble
− List : interface pour des objets qui autorisent des doublons et un accès direct à un
élément
− SortedSet : interface qui étend l'interface Set et permet d'ordonner l'ensemble
− SortedMap : interface qui étend l'interface Map et permet d'ordonner l'ensemble
2K2O/21 TBM 193
API Collections : Hiérarchie (3/3)
§ Les classes qui peuvent être directement utilisés :
− HashSet : Hashtable qui implémente l'interface Set
− TreeSet : arbre qui implémente l'interface SortedSet
− ArrayList : tableau dynamique qui implémente l'interface List
− LinkedList : liste doublement chaînée (parcours de la liste dans les deux sens) qui
implémente l'interface List
− HashMap : Hashtable qui implémente l'interface Map
− TreeMap : arbre qui implémente l'interface SortedMap
§ des interfaces pour faciliter le parcours des collections et leur tri :
− Iterator : interface pour le parcours des collections
− ListIterator : interface pour le parcours des listes dans les deux sens et pour
modifier les éléments lors de ce parcours
− Comparable : interface pour définir un ordre de tri naturel pour un objet
− Comparator : interface pour définir un ordre de tri quelconque
2K2O/21 TBM 194
L’interface : Collection
<<interface>>
Collection
boolean add(E e)
boolean addAll(Collection<? extends E> c)
void clear()
boolean contains(Object o)
boolean containsAll(Collection<?> c)
boolean equals(Object o)
int hashCode()
boolean isEmpty()
Iterator<E> iterator()
boolean remove(Object o)
boolean removeAll(Collection<?> c)
boolean retainAll(Collection<?> c)
int size()
Object[] toArray()
2K2O/21
<T>TBMT[] toArray(T[] a) 195
L’interface : Collection
Méthode Rôle
boolean add(E e) Ajouter un élément à la collection (optionnelle)
boolean addAll(Collection<? extends E> c) Ajouter tous les éléments de la collection fournie en paramètre
void clear() Supprimer tous les éléments de la collection (optionnelle)
boolean contains(Object o) Retourner si l'élément est présent dans la collection
boolean containsAll(Collection<?> c) Retourne si tous les éléments fournis en paramètres sont présents dans la collection
boolean equals(Object o) Vérifier l'égalité avec la collection fournie en paramètre
int hashCode() Retourner la valeur de hachage de la collection
boolean isEmpty() Retourner un booléen qui précise si la collection est vide
Iterator<E> iterator() Retourner un Iterator qui permet le parcours des éléments de la collection
boolean remove(Object o) Supprimer un élément de la collection s'il est présent (optionnelle)
boolean removeAll(Collection<?> c) Supprimer tous les éléments fournis en paramètres de la collection
boolean retainAll(Collection<?> c) Ne laisser dans la collection que les éléments en paramètres : retourne true si le contenu a été modifié
int size() Retourner le nombre d'éléments contenus dans la collection
Object[] toArray() Retourner un tableau contenant tous les éléments de la collection
2K2O/21 TBM 196
<T> T[] toArray(T[] a) Retourner un tableau typé de tous les éléments de la collection
COLLECTION : List
2K2O/21 TBM 197
List
§ Une liste est une collection ordonnée dont le 1er élément à l’indice 0
§ 2 implémentations
[Link] [Link]
§ utilise un tableau en interne pour § Synchronisé par défaut (4x plus lent
ranger les données, que ArrayList)
§ fournit un accès aux éléments par § est une classe dite "thread-safe" :
leur indice que plusieurs processus peuvent
l'utiliser en même temps sans risque
§ très performant et optimisé pour des de perte de données.
opérations d'ajout/suppression
d'éléments en fin de liste,
2K2O/21 TBM 198
ArrayList et Arrays
2K2O/21 TBM 199
Collection vs. Collections
§ Collection est l'interface racine dans l'hiérarchie de java framework Collections.
Chaque classe implémente Collection.
§ Collections est une classe utilitaire membre de java framework Collections et qui
a
− des méthodes statiques pour manipuler
− les objets qui implémentent l'interface List.
− Exemple, la méthode sort() qui tri un ArrayList dans l'ordre croissant
2K2O/21 TBM 200
Classe Collections : méthodes
Méthode Rôle
void copy(List, List) Copier tous les éléments de la seconde liste dans la
première
Enumeration enumeration(Collection) Renvoyer un objet Enumeration pour parcourir la collection
Renvoyer le plus grand élément de la collection selon
Object max(Collection)
l'ordre naturel des éléments
Renvoyer le plus grand élément de la collection selon
Object max(Collection, Comparator)
l'ordre précisé par l'objet Comparator
Object min(Collection) Renvoyer le plus petit élément de la collection selon l'ordre
naturel des éléments
Object min(Collection, Comparator) Renvoyer le plus petit élément de la collection selon l'ordre
précisé par l'objet Comparator
void reverse(List) Inverser l'ordre de la liste fournie en paramètre
void shuffle(List) Réordonner tous les éléments de la liste de façon aléatoire
Trier la liste dans un ordre ascendant selon l'ordre naturel
void sort(List)
des éléments
Trier la liste dans un ordre ascendant selon l'ordre précisé
void sort(List, Comparator)
par l'objet Comparator
2K2O/21 TBM 201
La classe Collections (Tri)
§ La méthode sort(List) ne fonctionnera que si tous les éléments de la liste
sont d’une classe qui implémente l’interface [Link]<? super
E>
§ L’interface Comparable <T>
− Permet de définir un ordre de trie naturel pour un objet
− Il faut redéfinir la méthode
public int compareTo(T o)
− de sorte
2K2O/21 TBM 202
Comparable - Exemple
§ Trier des personnes par âge
2K2O/21 TBM 203
La classe Collections (Tri)
§ La méthode sort(List, Comparator) utilise un objet qui implémente
l’interface [Link]<? super E>
§ L’interface Comparator <T>
− Permet de définir un ordre de tri quelconque
− Il faut redéfinir la méthode
public int compare(T o1, T o2)
− de sorte
2K2O/21 TBM 204
Comparator – Exemple
§ Trier des personnes par âge
2K2O/21 TBM 205