Cours Java3 Collections
Cours Java3 Collections
Langage Java
Sonia Kefi
2ème LI
Année Universitaire : 2024-2025
Les objectifs
✓ Collections
✓ Maps
✓ Utilitaires :
• trier une collection
• parcourir une collection
• chercher une information dans une liste triée
2
Rappel sur l’héritage
EtreHumain
• L'héritage multiple, une
Herbivore Carnivore
classe peut hériter en même
temps de plusieurs super
classes.
Lapin Homme Lion
3
Interface : Présentation
Triangle Cercle
Int x, y; Int d,r;
dessiner(Graphics g) dessiner(Graphics g)
effacer(Graphics g) effacer(g: Graphics g)
• Toutes les classes qui implémentent cette interface possèdent les méthodes
et les constantes déclarées dans celle-ci.
• Plusieurs interfaces peuvent être implémentées dans une même classe.
5
Héritage d’interfaces
6
Héritage d’interfaces
7
Les Collections
Collections : Présentation
9
Avantages
10
Collections : Architecture
12
Collections : Hiérarchie
– Collection
13
Collections : Implémentation
• Le framework fournit les implémentations suivantes des
différentes interfaces:
• Principales méthodes :
16
SET
Set<E>
• Set : est un ensemble ne contenant que des valeurs et ces valeurs ne sont
pas dupliquées.
18
Exemple
SetTrie
19
Set<E>
• Méthodes de Set<E>
– La méthode add n’ajoute pas un élément si un élément égal est déjà dans l’ensemble.
• Set : TreeSet et HashSet
• C'est une interface identique à celle de Collection. Deux implémentations
possibles:
– TreeSet : les éléments sont rangés de manière ascendante (triés).
– HashSet : les éléments sont rangés suivant une méthode de hachage
• Le choix entre ces deux objets est lié à la nécessité de trier les éléments :
– les éléments d'un objet HashSet ne sont pas triés : l'insertion d'un nouvel élément est
rapide.
– les éléments d'un objet TreeSet sont triés : l'insertion d'un nouvel élément est plus long.
20
Classe HashSet<E>
21
Classe HashSet<E>
import java.util.*;
public class TestHashSet {
public static void main(String args[]) {
Set set = new HashSet();
set.add("CCCCC");
set.add("BBBBB");
set.add("DDDDD");
set.add("BBBBB");
set.add("AAAAA");
Iterator iterator = set.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());}
}
}
• L'insertion d'un nouvel élément dans un objet de la classe TreeSet est donc
plus lent mais le tri est directement effectué.
23
Classe TreeSet<E>
import java.util.*;
public class TestHashSet {
public static void main(String args[]) {
Set ts = new TreeSet();
ts.add("one");
ts.add("two");
ts.add("three");
ts.add("four");
ts.add("three");
System.out.println("TreeSet = " + ts);
}
}
26
Interface List
Interface List
• Elle hérite aussi de collection, mais elle autorise la
duplication.
• Dans cette interface, un système d'indexation a été
introduit pour permettre l'accès (rapide) aux éléments de
la liste.
28
Exemple
29
Les méthodes de l'interface List
32
Parcours de la Liste
33
Exemple
import java.util.*;
public class Example {
public static void main(String args[]) {
// Create a new ArrayList
ArrayList L= new ArrayList();
// Add some items to the ArrayList
L.add(1);
L.add(2);
L.add(3);
L.add(4);
L.add(5);
Iterator i = L.iterator();
// Loop through ArrayList contents
while(i.hasNext()) {
Object item = i.next();
System.out.print(item + ", ");
34
} }}
Autres opérations sur la
collection
• Tri
• Recherche dans une
collection
Collection
36
Interface ITERATOR<E>
• En Java, la classe Iterator fait partie de l'interface java.util.Iterator.
• Elle est utilisée pour parcourir les éléments d'une collection (par exemple,
une liste, un ensemble, etc.) de manière séquentielle sans présenter les
détails internes de la collection.
• L'interface Iterator contient les méthodes suivantes :
37
Fonctionnalités principales de l'interface
Iterator
• L'interface Iterator définit trois méthodes principales :
• Pour que la liste soit correctement triée, il faut que les éléments
de la liste soient comparables.
• Plus exactement, la méthode sort() ne fonctionnera que si tous
les éléments de la liste sont d’une classe qui implante l’interface
prédéfinie :
Comparable<T>
41
Interface Comparable<T>
• Cette interface utilise un ordre naturel dans les instances d’une classe.
• L’interface est présente dans le package java.lang.
• L'interface Comparable est utile lorsqu’on veut définir un ordre par défaut
pour les objets.
• Par exemple, dans le cas des objets Person, on veut définir un ordre basé
sur le nom.
• Les éléments sont comparables par un ordre usuel, par exemple :
– Byte, Short, Integer, Long, Float, Double, BigInteger et BigDecimal: Ordre numérique
signé.
– Char (caractère): Ordre numérique non signé (donc alphabétique).
– File: Ordre lexicographique sur le chemin d'accès.
– String: Ordre lexicographique.
– Date: Ordre chronologique. 42
Interface Comparable<T>
• L'interface Comparable déclare une seule méthode pour trier les éléments
en Java, nommée :
• On redéfinie la méthode :
public int compareTo (Object o) avec :
44
Interface Map
Interface Map
<<interface>> <<abstract>>
Map<K, V> AbstractMap<K, V>
<<interface>>
SortedMap <K, V> TreeMap<K, V> HashMap<K, V>
46
Interface Map
• L’interface Map<K,V> correspond à un groupe de couples clés-valeurs.
– TreeMap<K,V>, arbre ordonné suivant les valeurs des clés avec accès en log(n) ;
48
Interface Map : Les méthodes
• Object put(K clé, V valeur) • ajouter et enlever des couples clé – valeur
• void putAll(Map<K,V>map)
• void remove(Object key)
• boolean containsKey(Object clé) • vérifier si une table contient une clé
• boolean containsValue(Object valeur) • vérifier si une table contient une valeur
• Set<Map.Entry<K,V>> entrySet()
• V get(Object clé) • récupérer une référence à un des
• boolean isEmpty() éléments donnant sa clé
• Set<K> keySet() • récupérer les clés
• int size() • récupérer la taille
• Collection<V> values() • récupérer les valeurs
49
Interface Map : Récupération des données
keySet()
Récupérer les clés sous forme de Set<K> avec la méthode iterator()
50
Interface Map : Map.Entry<K,V>
53
Exemple de la classe HashMap
55
Exemple de TreeMap
57
To be continued !
58