Vous êtes sur la page 1sur 16

Les collections

Master WISD
AU: 2017/2018
Introduction
 Une collection regroupe plusieurs données de même type (nature), qui sont
ses éléments.
 Les éléments d'une collection sont des références à des objets (instances de
classe ou tableaux).
 Les éléments ne peuvent pas être des valeurs primitives (int float, …).
Exemples : rayon de produits, liste d’étudiants, ...
 Une structure collective implante une collection
 Objectifs:
 adapter la structure collective aux besoins

 ne pas reprogrammer les traitements classiques

11/12/2017 A.Y. 2
Introduction
Trois sortes de structures de données:
 Tableaux:
 accès par index

 possibilité de stocker des types de base ou des objets

 inconvénient: taille

 Collections:
 accès séquentiel : premier, suivant

 insertions et suppressions efficaces

 recherche, modification
 Les Maps :
 structure modifiable

 stocke des couples clé -> valeur

11/12/2017 A.Y. 3
Opérations sur les tableaux

La classe java.util.Arrays permet la manipulation des tableaux.


Quelques méthodes de classe:
 equals(): comparer deux tableaux
Arrays.equals(tableau1, tableau2)
 toString(): retourner le contenu du tableau
Arrays.toString(tableau)
 deepToString() : si le tableau contient lui-même un tableau
Arrays.deppToString(tableau)
 fill(): affecte la même valeur à tous les éléments du tableau
Arrays.fill(tableau, valeur)
 asList(): convertit le tableau en une liste
Opérations sur les tableaux

 sort(): trier les éléments


Arrays.sort(tableau)
 binarySearch() : rechercher un élément
Arrays.binarySearch(tableau, valeur);
Remarque:
Pour pouvoir appliquer ces deux méthodes sur un tableau d'objets, il faut s'assurer
que le type d'objets stocké dans le tableau implémente l'interface Comparable ou créer
une implémentation de l'interface Comparator.
Les collections
Packages java.util et java.util.concurrent
Hiérarchie d’interfaces:
 Collection
 Map

11/12/2017 A.Y. 6
Méthodes des collections
Principales méthodes communes:
 boolean add(Object) : ajouter un élément
 boolean addAll(Collection) : ajouter plusieurs éléments
 void clear() : supprimer tous les éléments
 boolean remove(Object) : Supprimer l’élément indiqué
 boolean removeAll(Collection) : Supprimer plusieurs éléments
 boolean contains(Object) : tester l'appartenance
 boolean containsAll(Collection) : tester l’appartenance collective
 boolean retainAll(Collection) : déterminer l’intersection
 int size() : récupérer nombre d'éléments (taille)
 boolean isEmpty() : vérifier si vide
 Iterator iterator() : pour parcourir
 Object[] toArray() : récupérer les éléments dans un tableau

11/12/2017 A.Y. 7
Caractéristiques des collections

 Ordonnées ou non
 Ordre sur les éléments

 Doublons autorisés ou non


 liste (List) : avec doubles

 ensemble (Set) : sans doubles

 Accès
 indexé

 Séquentiel (Iterator )

11/12/2017 A.Y. 8
Les listes
 Classes implantent l'interface List
 ArrayList

 Liste implantée dans un tableau


 L’accès immédiat à chaque élément
 Les opération d’ajout et de suppression sont lentes
 LinkedList
 ajout et suppression très efficaces
 permet d'implémenter les files et les piles
 méthodes supplémentaires : addFirst(), addLast(), getFirst(),
getLast(), removeFisrt(), removeLast()
 Vector

 tableau dynamique

11/12/2017 A.Y. 9
Les ensembles
Classes implantent l'interface Set
 Eléments non dupliqués
 HashSet
o table de hashage
o accès très performant aux éléments

 TreeSet
o arbre binaire de recherche
o maintient l'ensemble trié en permanence

11/12/2017 A.Y. 10
Les Maps
 Une map est appelée aussi table associative ou dictionnaire
 une map fonctionne avec deux éléments
 l'élément clé (de type K)

 l'élément valeur (de type V)

 Les clés insérés n'ont pas de doublons


 Il est possible d'avoir des doublons au niveau des valeurs

11/12/2017 A.Y. 11
Les Maps
Quelques méthodes :
 V put(K key, V value): insérer un couple clé/valeur et supprime si il existe le
couple clé/valeur précédent ayant la même clé, renvoie l'ancienne valeur ou
null.
 V get(Object key): renvoyer la valeur correspondant à la clé ou null si il n'y

a pas de couple clé/valeur ayant la clé indiquée


 isEmpty() : vérifier si la map est vide

 size(): retourner la taille (nombre de couples clé/valeur)

11/12/2017 A.Y. 12
Généricité des algorithmes
 Utiliser uniquement les méthodes communes
 Parcours des éléments de la collection : Iterator
 accès indexé pas toujours disponible (méthode get())

 utiliser Iterator iterator() : les méthodes next() et hasNext()

Exemple:
List liste= new ArrayList ();
Iterator it = liste.iterator();
while (it.hasNext())
//traitement: it.next()

11/12/2017 A.Y. 13
Collection paramétrée
■ Les collections sont homogènes, elle contiennent des éléments qui ont le
même type (pas forcément la même classe).
■ Elles sont paramétrés par une variable de type ( souvent nommée E ou T
pour indiquer le type d'un élément).
■ Les collections ne sont pas spécialisées pour les types primitfs (de base), ce
sont des collections d'objet.

11/12/2017 A.Y. 14
Interopération
 Collection vers les tableaux: Collection.toArray()
 Tableau vers Collection: Collections.addAll()
 Tableau vers List: Arrays.asList()
 List vers List: list.subList()
 Deque vers Queue: Collections.asLifoQueue()
 Map vers Set: Collections.newSetFromMap()
 Map vers l'ensemble des clés: map.keySet()
 Map vers la collection des valeurs: map.values()
 Map vers l'ensemble des couples clé/valeur: map.entrySet()

11/12/2017 A.Y. 15
En cours de préparation

11/12/2017 A.Y. 16

Vous aimerez peut-être aussi