1. La programmation en Java
Les collections
MIT University
M1 Génie Logiciel
2012- 2013
M. CISSE
2. Plan
1. Définition d’une collection
2. Les collections de type Set
3. Les collections de type List
4. Les collections de type Map
3. - Une collection est une structure de données permettant de
regrouper un ensemble d’objets
- Comme un tableau mais en mieux
- La plupart des opérations sur un tableau (parcours, recherche,
ajout, suppression, etc.) déjà implémentées
- On parle de Java Collections Framework (JCF)
- http://www.falkhausen.de/en/diagram/html/java.util.Collecti
on.html
Les collections ->
Définition d’une collection
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 3
4. - Les collections de type Set
- Les collections de type List
- Les collections de type Map
Les collections ->
Définition d’une collection
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 4
5. - Interface java.util.Set<E>
- Interface java.util.List<E>
- Interface java.util.Map<E>
Les collections ->
Définition d’une collection
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 5
6. Aussi au sein du JCF :
- Interface java.util.Iterator<E>
Déclare des méthodes pour le parcours des collections
Les collections ->
Définition d’une collection
boolean hasNext()
E next()
void remove()
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 6
7. Aussi au sein du JCF :
- Interface java.util.ListIterator<E> qui hérite de
java.util.Iterator<E>
Déclare des méthodes pour le parcours des listes dans les deux sens et
modifier les éléments de la liste
Les collections ->
Définition d’une collection
void add(E e)
boolean hasPrevious()
int nextIndex()
E previous()
int previousIndex()
void set(E e)
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 7
9. - Interface java.util.Set<E>
- Représentation d’un ensemble (collection non
ordonnée d’éléments)
- Type de collection qui refuse les doublons
- Classes HashSet<E>, TreeSet<E>
Les collections ->
Les collections de type Set
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 9
10. HashSet<E>
- Classe java.util.HashSet<E>
- Implémentation de java.util.Set<E>
Les collections ->
Les collections de type Set
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 10
11. Les collections ->
Les collections de type Set
HashSet<E>
- Classe java permettant de créer et de manipuler un
ensemble
- plus simple que TreeSet<E> et LinkedHashSet<E>
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 11
12. Les collections ->
Les collections de type Set
HashSet<E>
Méthodes de la classe
java.util.HashSet<E>
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 12
13. HashSet<E>
Exemple de manipulation
d’un ensemble grâce à la
collection
java.util.HashSet<E>
Les collections ->
Les collections de type Set
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 13
15. Exercice 1
En utilisant les HashSet, écrire un programme qui
recueille des entiers positifs rentrés par l’utilisateur jusqu’à
ce que celui ci renseigne une valeur négative.
1. Le programme envoie un avertissement lorsque la
valeur rentrée existe déjà.
2. À l’entrée d’une valeur négative, vous parcourez la
collection pour afficher ses éléments.
Les collections ->
Les collections de type Set
5
0
2
2
Existe déjà
4
5
Existe déjà
-2
0 2 4 5 -2
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 15
17. - java.util.List<E>
- Collections ordonnées ou séquences
- Permettent l’accès par indice
- Autorisent les doublons
- Classes ArrayList<E>, LinkedList<E>
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 17
18. ArrayList<E>
- Classe java.util.ArrayList<E>
- Implémentation de java.util.List<E>
- Tableau d’objets de taille dynamique
- on peut accéder à un élément du ArrayList par
son index
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 18
19. ArrayList<E>
- Constructeurs
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 19
20. ArrayList<E>
- Quelques méthodes
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
void add(int index, E element)
void addAll(int index, Collection<? extends E> c)
E get(int index)
int lastIndexOf(Object o)
E remove(int index)
E set(int index, E element)
Object[] toArray()
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 20
21. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
ArrayList<E>
exemple
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 21
22. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
ArrayList<E>
parcours
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 22
23. LinkedList<E>
- Classe java.util.LinkedList<E>
- Implémentation de java.util.List<E>
- Collection permettant de représenter des listes
chainées
- Liste dont chaque élément contient une référence vers
le suivant
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 23
24. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
LinkedList<E>
Constructeurs
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 24
25. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
LinkedList<E>
Quelques méthodes
void addFirst(Object o)
void add(int index, E element)
Object getFirst()
Object get(int index)
Object set(int index, E element)
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 25
26. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
LinkedList<E>
exemple
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 26
27. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
LinkedList<E>
- parcours
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 27
28. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type List
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Exercice 2
En utilisant les List (ArrayList<E> ou
LinkedList<E>), écrire un programme
Miroir.java qui recueille des chaines de caractères
rentrées par l’utilisateur jusqu’à ce que celui ci renseigne
la chaine "FIN".
À l’entrée de "FIN", vous parcourez la collection pour
afficher ses éléments mais à l’inverse.
Engage
le
jeu
que
je
le
gagne
FIN
gagne le je que jeu le
Engage
28
30. - java.util.Map<K,V>
- Type de collection qui associe une clé unique de type K à une
valeur de type V
- Chaque clé ne peut correspondre qu’à une valeur au plus
- Classe HashMap<K,V>
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type Map
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 30
31. HashMap<K,V>
Constructeurs
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type Map
HashMap ()
HashMap (int initialCapacity)
HashMap (Map<? extends K, ? extends V> m)
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 31
32. HashMap<K,V>
Quelques méthodes
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type Map
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
boolean containsKey(Object key)
boolean containsValue(Object value)
V get(Object key)
Set<K> keySet()
Collection<V> values()
V put(K key, V value)
void putAll(Map<? extends K,? extends V> m)
V remove(Object key)
32
33. HashMap<K,V>
Exemple
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type Map
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 33
34. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type Map
HashMap<K,V>
parcours
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 34
35. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Les collections ->
Les collections de type Map
Exercice 3
Faire le parcours d’une HashMap avec
Iterator
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 35