[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
131 vues21 pages

Collections Java : Guide Complet

Le document décrit les principales collections du package java.util, notamment les interfaces List, Set et Map ainsi que leurs classes d'implémentation comme ArrayList, LinkedList, HashSet, TreeSet, HashMap. Le document explique leur fonctionnement et fournit des exemples d'utilisation.

Transféré par

chaymae
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
131 vues21 pages

Collections Java : Guide Complet

Le document décrit les principales collections du package java.util, notamment les interfaces List, Set et Map ainsi que leurs classes d'implémentation comme ArrayList, LinkedList, HashSet, TreeSet, HashMap. Le document explique leur fonctionnement et fournit des exemples d'utilisation.

Transféré par

chaymae
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 21

Les collections

Java.util

Youness IDRISSI KHAMLICHI


ENSA-Fès
1
Les collections en Java
À quoi servent les collections ?
 Stocker les données
 Autrement que dans de simples tableaux
 des structures de tailles dynamique
 des structures adaptées au besoin

 Sans réinventer la roue


 Gagner du temps et de l’énergie
 Bénéficier de classes robustes et performantes
 Fournies par Java en standard
 Dans le package java.util
Plus de détails, plus de documentation, visitez les sites ci-dessous :
https://docs.oracle.com/javase/8/docs/api/java/util/package-summary.html
2
Le package java.util
I I

I I I I

 Plus de détails, plus de documentation, visitez les sites ci-dessous :


 https://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html
 https://docs.oracle.com/javase/8/docs/api/java/util/package-summary.html

3
« List-Set-Map » dans java.util

Collection

extends extends

Map Set List

implements implements extends implements implements

HashMap HashTable SorteMap HashSet ArrayList

implements

TreeMap

4
Table de comparaison (List-Set-Map)
List Set Map
List permet les éléments en
Set n’autorise pas les
double. N’importe quel
doublons. Set et toutes les
nombre d’éléments en Map stocke les éléments sous forme de
classes qui implémentent
Duplication double peut être inséré paire clé/valeur. Map n’autorise pas les clés
l’interface Set doivent
dans la liste sans affecter les en double, mais les valeurs en double.
avoir des éléments
mêmes valeurs existantes et
uniques.
leurs index.
Map peut avoir au plus une clé NULL
Valeurs List autorise n’importe quel Set autorise au plus une
unique et un nombre quelconque de valeurs
nulles nombre de valeurs NULL. valeur NULL unique.
NULL.
Set ne maintient aucun Pareil à Set, Map ne stocke pas non plus les
ordre; encore peu de ses éléments dans un ordre, mais peu de ses
List et toutes ses classes
classes trient les éléments classes font de même. Par exemple TreeMap
d’implémentation
Ordre dans un ordre tel que trie la map dans l’ordre croissant des clés et
conservent l’ordre
LinkedHashSet conserve LinkedHashMap trie les éléments dans
d’insertion.
les éléments dans l’ordre l’ordre d’insertion, l’ordre dans lequel ils
d’insertion. ont été ajoutés à LinkedHashMap.
Les classes HashSet, LinkedHashSet, HashMap,TreeMap, WeakHashMap,
ArrayList, LinkedList etc.
utilisés TreeSet, SortedSet etc. LinkedHashMap, IdentityHashMap, etc.
5
L’interface Collection
 Principales méthodes
 int size()
 boolean isEmpty
 boolean add(Object o)
 boolean remove(Object o)
 boolean contains(Object o)
 void clear()
 Iterator iterator()
 Exemples de classes l’implémentant
 ArrayList, LinkedList : différents types de liste
 TreeSet, HashSet : différents types d’ensemble

6
public interface Iterable<T> {
Iterator<T> iterator();
L’interface Iterator }

 Spécifie les caractéristiques d’un « itérateur »


 Énumère les éléments d’une collection
 Pour écrire une itération
 Parcours dans un seul sens
 Disponible pour toute collection
 Via la méthode iterator() imposée par l’interface Collection

 Principales méthodes d’un itérateur


 Boolean hasNext()
 Object next() throws NoSuchElementException
 L’exception (éventuellement) lancée dérive de
RuntimeException

7
Utilisation d’itérateur
// Exemple de parcours d'une collection
public static void main(String[] args) {
Collection collection = new HashSet();
collection.add("un");
collection.add("deux");
collection.add("trois");

Iterator it = collection.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}

 Exécution :

8
Utilisation implicite d’itérateur
 Utilisation du « for each »
 Fonctionne pour tous les objets implémentant l’interface
Iterable (en particulier les collections)
Collection collection = new HashSet();
collection.add("un");
collection.add("deux");
collection.add("trois");

//Iterator it = collection.iterator();

for (Object o : collection) { //foreach


System.out.println(o.getClass() + " - " + o);
}

9
L’interface List
 Spécifie les caractéristiques d’une liste
 Suite de données ordonnées (et indexées à partir de 0)
 Pouvant contenir des doublons
 Principales méthodes (en + de celles imposées par
Collection)
 void add(int index, Object o)
 Object get(int index)
 Object remove(int index)
 Int indexOf(Object o)
 Exemple de classes l’implémentant
 ArrayList : liste dans un tableau, accès rapide
 LinkedList : liste chaînée, insertion rapide

10
L’interface List : Exemple (1/2)
//Une Liste de collection du type String
List<String> myArray = new ArrayList<String>();

myArray.add("un");
myArray.add("deux");
myArray.add("trois");

for (int i = 0; i < myArray.size(); i++) {


System.out.println(myArray.get(i));
}

Résultat :

un
deux
trois

11
L’interface List : Exemple (2/2)
List<String> list = new ArrayList<>();
// ou List list = new LinkedList();
list.add(0, "Dimanche");
list.add(1, "Lundi");
list.add(2, "Mardi");
list.add(3, "Mercredi");
list.add(4, "Jeudi");
list.add(5, "Vendredi");
list.add(6, "Samedi");

(1) (2)

Iterator it = list.iterator(); // foreach


while (it.hasNext()) { for (Object o : list) {
System.out.println(it.next()); System.out.println(o);
} }

12
L’interface set
 Spécifie les caractéristiques d’un ensemble
 Ensemble de données non ordonnées
 Sans doublons
 Principales méthodes
 Celles de collection
 Exemples de classes l’implémentant
 HashSet : temps constant pour les opérations de base
 TreeSet : éléments rangés selon leur ordre naturel

13
L’interface Map
 Spécifie les caractéristiques d’un « dictionnaire »
 Ensemble de couples (clé, valeur)
 Clés uniques, Couples non ordonnés
 Principales méthodes
 Object put(Object key, Object value)
 boolean containsKey(Object key)
 Object get(Object key)
 Set keySet()
 Collection values()
 Exemples de classes l’implémentant
 HashMap, TreeMap

14
L’interface Map : exemple
Map map = new HashMap();
map.put("OS", "Windows");
map.put("langage1", "Java");
map.put("langage2", "Java ee");
map.put("langage3", "Android");
map.put(null, null);

Set set = map.keySet(); //keyset retourne les clés

(1) (2)

for (Object o : set) { Iterator it = set.iterator();


System.out.println(o); while (it.hasNext()){
} System.out.println(it.next());
}

Résultat :
15
Algorithmes fournis
List list = new LinkedList();
list.add(0, "Dimanche");
list.add(1, "Lundi");
list.add(2, "Mardi");
list.add(3, "Mercredi");
list.add(4, "Jeudi");
list.add(5, "Vendredi");
list.add(6, "Samedi");

//Recherche dans une liste


int index = Collections.binarySearch(list, "Vendredi");
System.out.println("Index = " + index);

 D’autres algorithmes de la classe Collections


 min(l), max(l), sort(l), reverse(l), shuffle(l) …

16
Exemple : tri d’une liste
List l = new ArrayList();
l.add(2);
l.add(3);
l.add(1);

for (Object o : l) {
System.out.println(o);
}

Collections.sort(l);
for (Object o : l) {
System.out.println(o);
}

17
Opérations dans une collection ArrayList
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Dimanche");
arrayList.add("Lundi");
arrayList.add("Mardi");

//Trouver l’indice d’une vlaur dans un ArrayList


System.out.println(arrayList.indexOf("Mardi"));
//true si la valeur existe
System.out.println(arrayList.contains("Mardi"));

// Remplacer Lundi par Bonjour


System.out.println(arrayList.set(1, "Bonjour"));
//Retourner false, la valeur Lundi n'existe plus
System.out.println(arrayList.contains("Lundi"));

18
Opérations dans une collection HashMap
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("nom", "IDRISSI");
hashMap.put("prenom", "Youness");
hashMap.put("fonction", "Professeur d'Enseignement Seuperieur");
hashMap.put("ville", "Fès");
//Trouver un objet par clé dans un HashMap
System.out.println(hashMap.get("nom"));
//true si la valeur existe
System.out.println(hashMap.containsValue("Fès"));
//true si la clé existe
System.out.println(hashMap.containsKey("ville"));

//Supprimer une clé


hashMap.remove("ville");
//retourner false après supression
System.out.println(hashMap.containsValue("Fès"));

19
Stack vs Queue
 Stack : LIFO
stack.push(el); stack.pop();

 Queue : FIFO

queue.poll();

 [1, 2, 3]
 Queue (qu.poll();) => [2, 3]
 Stack (stack.pop();) => [1, 2]
queue.offer(el);

20
Stack vs Queue
Queue<Integer> qu = new PriorityQueue<Integer>();
qu.offer(1);
qu.offer(2);
qu.offer(3);
System.out.println(qu); Résultat :
qu.poll(); System.out.println("Queue => " + qu); [1, 2, 3]
qu.poll(); System.out.println("Queue => " + qu); Queue => [2, 3]
qu.poll(); System.out.println("Queue => " + qu); Queue => [3]
Queue => []
Stack<Integer> stack = new Stack<>(); [1, 2, 3]
stack.push(1); Stack => [1, 2]
stack.push(2); Stack => [1]
stack.push(3); Stack => []
System.out.println(stack);
stack.pop(); System.out.println("Stack => " + stack);
stack.pop(); System.out.println("Stack => " + stack);
stack.pop(); System.out.println("Stack => " + stack);

21

Vous aimerez peut-être aussi