Chapitre8 - Les CollectionsP1
Chapitre8 - Les CollectionsP1
Chapitre8 - Les CollectionsP1
2
Les Collections
3
Collection : Définition
✔ Les collections en java est un ensemble d'interfaces et classes qui aident à stocker, ordonner et traiter les
données efficacement.
4
Collection : pourquoi?
✔Adapter la structure collective aux besoins de la collection
✔Certaines collections acceptent les doublons, d'autres pas. Certaines sont ordonnées,
d'autres pas. Certaines collections émettent quelques restrictions, comme le type ou
l'interdiction de la valeur null. 5
Collections Vs. Tableaux statiques
•Tableau
-accès par index
-recherche efficace si le tableau est trié (dichotomie)
-défaut majeur : nombre d’éléments borné
•Collections
-accès séquentiel : premier, suivant
-insertions et suppressions rapide
6
Les Collections (Architecture)
7
Architecture
Composée de 3 parties :
8
Architecture
2 hiérarchies principales :
Collection MAP
9
Architecture
10
Interface « Collection »
11
Interface « Collection »
12
Collection: List
13
List
- Une liste est une collection ordonnée. L'utilisateur de celle-ci a un contrôle complet
sur les éléments qu'il insère dedans, et il peut y accéder par leur index.
14
ArrayList Vs. Vector
java.util.ArrayList java.util.Vector
16
List: ArrayList
- Au fur et à mesure qu'on ajoute des éléments et qu'on " dépasse " la capacité, la
taille augmente en conséquence.
17
List: ArrayList
- contains(Object o): renvoie true si la liste contient l'objet o, false sinon. La redéfinition de la
fonction equals(Object obj) est importante pour comparer deux objets selon leurs attributs.
19
Tri et recherche dans une LIST
20
Collection Vs. Collections
Collections.sort(arraylist);
21
La classe Collections
La classe Collections est une classe utilitaire pour les collections Java. Cette classe
contient des méthodes statiques qui manipulent ou retournent des collections.
22
La classe Collections
23
La classe Collections (Tri)
24
L’interface Comparable<T>
- Interface pour définir un ordre de tri naturel pour un objet
- Redéfinir la méthode
public int compareTo (T o) avec
25
Comparable: Exemple (1/2)
public class Student implements Comparable<Student>{ public void setName(String name) {
private String name; this.name = name;
}
public Student(){}
26
Comparable: Exemple (2/2)
public class TestSort{
studentList.add(new Student("Alex"));
studentList.add(new Student("Bob"));
studentList.add(new Student("Ali"));
Collections.sort(studentList);
}
27
L’interface Comparator<T>
- Interface pour définir un ordre de tri quelconque
- Redéfinir la méthode
public int compare(T o1, T o2)
28
Comparator: Exemple (1/2)
@Override
return s1.getName().compareTo(s2.getName());
29
Comparator: Exemple (2/2)
public class TestSort{
studentList.add(new Student("Alex"));
studentList.add(new Student("Bob"));
studentList.add(new Student("Ali"));
} 30
Comparable Vs. Comparator
31
SET
32
Set: Definition
- Set est une collection qui ne contient aucun élément en double. Plus formellement,
Set ne contiennent pas une paire d’éléments e1 et e2 tels que e1.equals(e2).
- Il stocke les éléments dans une table de hachage qui est un très bon atout pour les
haute performances, mais il ne garantie pas l'ordre d'insertion des éléments lors
de parcours.
33
Set: Definition
● Méthodes de Set<E>
- sens du hashCode à l’objet passé en paramètre sera enlevé
- la méthode add n’ajoute pas un élément si un élément égal est déjà dans l’ensemble
34
Set: Définition
• L'interface Set définit les fonctionnalités d'une collection qui ne peut pas contenir de
doublons dans ses éléments.
• Les éléments ajoutés dans une collection de type Set doivent ré implémenter leurs
méthodes equals() et hashCode(). Ces méthodes sont utilisées lors de l'ajout d'un
élément pour déterminer s'il est déjà présent dans la collection.
• La valeur retournée par hashCode() est recherchée dans la collection : si aucun objet de
la collection n'a la même valeur de hachage alors l'objet n'est pas encore dans la
collection et peut être ajoutési un ou plusieurs objets de la collection ont la même valeur
de hachage alors la méthode equals() de l'objet à ajouter est invoquée sur chacun des
objets pour déterminer si l'objet est déjà présent ou non dans la collection
35
SET: Exemple (1/2)
import java.util.Set;
for(int i = 0; i<4; i++){
import java.util.HashSet;
hashset.add(count[i]);
import java.util.TreeSet;
}
System.out.println(hashset);
public class ExempleSet {
}}
36
SET: Exemple (2/2)
37
HashSet<E> (Exemple 1)
● HashSet est l'implémentation la plus utile de Set. Elle permet de stocker des objets sans doublons .
39
HashSet<E> (Exemple 2-1)
41
HashSet<E> (Exemple 2-3)
● Cette classe ne vérifie l’égalité que pour les objets qui ont le même hashCode
43
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.
44
HashCode: Exemple
@Override
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.
45
TreeSet: Définition
● La classe TreeSet, ajoutée à Java 1.2, stocke ses éléments de manière ordonnée
en les comparant entre-eux. 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.
● utilise un arbre de recherche. Pour pouvoir utiliser un TreeSet, il faut que les
éléments soit comparables. Cette fonction est plus lente que HashSet
46
TreeSet: Définition
● L'ordre des éléments de la collection peut être défini par deux moyens :
47
TreeSet: Exemple
48
Merci pour votre attention
49