0% ont trouvé ce document utile (0 vote)
50 vues30 pages

Java Collections

Transféré par

Moise Diarra
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)
50 vues30 pages

Java Collections

Transféré par

Moise Diarra
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

Introduction Interfaces et implémentations Algorithmes Conclusion

Les collections Java

Cours Java - F. Michel


1 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Plan

1 Introduction

2 Interfaces et implémentations

3 Algorithmes

4 Conclusion

Cours Java - F. Michel


2 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Notion de Collection
Définition
Une collection est un regroupement structuré de données
En Java : c’est un objet qui structure d’autres objets
Exemple : ArrayList<E>, HashMap<K,V>, etc.

L’API des collections Java en 2 packages


java.util : les collections essentielles et le cadriciel associé
java.util.concurrent : programmation concurrente

Exemples de modélisation
Une main dans un jeu de cartes ⇒ ensemble de n cartes
Un répertoire téléphonique ⇒ tableau associatif nom → numéro
Cours Java - F. Michel
4 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Les collections framework orientés objet


Des interfaces
Définissent les opérations possibles sur un type de collection
E.g. List<E>, Map<K,V>, Queue<E>. . .

Des implémentations
Les classes qui implémentent les interfaces
E.g. ArrayList<E>, HashMap<K,V>, ArrayDeque<E>. . .

Des algorithmes
Méthodes polymorphes manipulant les collections
E.g. Collections.sort(List<T> list)

Exemples : STL en C++ collections SmallTalk et hors POO Python . . .

Cours Java - F. Michel


5 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Bénéfices

Utilisation
Programmation sans effort : pas de code bas niveau, pas d’algo
Rapidité et qualité du code : implémentations éprouvées

Standardisation
Interopérabilité entre APIs développées indépendamment
Facilite la prise en main de nouvelles APIs
Facilite la création de nouvelles APIs
Promeut la réutilisation des nouvelles collections développées

Cours Java - F. Michel


6 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Les interfaces

Cours Java - F. Michel


8 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.Collection<E>
Définit toutes les opérations possibles sur tout type de
collection :

Cours Java - F. Michel


9 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.Collection<E>

Cours Java - F. Michel


10 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.Collection<E>
remarques
Générique
Nécessite de spécifier le type E des objets contenus

implémente java.lang.Iterable<T>
définit des méthodes permettant une itération sur la collection

Certaines méthodes sont documentées optional


Évite une exposition du nombre d’interfaces dans l’API
Il existe des collections immutable, fixed-size, append-only . . .
Elles ne permettent donc pas toutes certaines opérations
⇒ java.lang.UnsupportedOperationException
Cours Java - F. Michel
11 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.Collection<E>
Sous-types

Types de Collection aux comportements spécialisés


Set<E> : collection non ordonnée d’objets non égaux
SortedSet<E> : collection triée d’objets non égaux
List<E> : collection d’objets indexés
Queue<E> : file d’objets à traiter, e.g. en mode FIFO
Deque<E> : file où on peut traiter le début ou la fin (e.g. LIFO)

Cours Java - F. Michel


12 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Interface java.util.Set<E>

Cours Java - F. Michel


13 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Exemple d’implémentation de Set<E>


java.util.HashSet<E>

Cours Java - F. Michel


14 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Exemple d’utilisation de
java.util.HashSet<E>

java FindDups i came i saw i left



4 distinct words: [left, came, saw, i]

Cours Java - F. Michel


15 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Exemple d’utilisation de
java.util.HashSet<E>

java FindDups2 i came i saw i left



Unique words: [left, saw, came]
Duplicate words: [i]
Cours Java - F. Michel
16 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Interface java.util.List<E>

Cours Java - F. Michel


17 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Interface java.util.List<E>

Cours Java - F. Michel


18 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Implémentation java.util.ArrayList<E>

Cours Java - F. Michel


19 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Autre implémentation
java.util.LinkedList<E>

⇒ sera, par exemple, plus rapide qu’une ArrayList si on


travaille fréquemment avec des indices se trouvant à l’intérieur
de la liste

Cours Java - F. Michel


20 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

L’interface java.util.ListIterator<E>

Cours Java - F. Michel


21 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

L’interface java.util.SortedSet<E>

Cours Java - F. Michel


22 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Exemple avec java.util.TreeSet<E>


[2020, abc, another, test]

Cours Java - F. Michel


23 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.Queue<E>

Cours Java - F. Michel


24 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.Deque<E>

Cours Java - F. Michel


25 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.Map<K,V>
Tableau associatif : clé → valeur

API de Map<K,V>

Cours Java - F. Michel


26 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

java.util.SortedMap<K,V>

Tableau associatif trié sur les clés

API de SortedMap<K,V>

Cours Java - F. Michel


27 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

La classe java.util.Collections

Fournit un grand nombre de méthodes statiques permettant de


travailler avec les collections : max, min, sort, reverse,
search. . .

java.util.Collections

Cours Java - F. Michel


29 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

L’interface java.util.stream.Stream
Les collections permettent de créer des Stream sur elles : une séquence d’éléments sur laquelle on peut appliquer
divers traitement, possiblement chaînés.

java.util.stream.Stream

Cours Java - F. Michel


30 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Exemple de code

Cours Java - F. Michel


31 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Diagramme de classes partiel

Image tirée du Wiki book sur les collections Java Description complète du cadriciel par Oracle

Cours Java - F. Michel


33 / 34
Introduction Interfaces et implémentations Algorithmes Conclusion

Conclusion
Philosophie
Quelque soit le langage, il faut utiliser les collections
prédéfinies
Il faut chercher jusqu’à trouver celle qui répond parfaitement à
vos besoins

Conséquences
Probablement, vous ne coderez jamais plus une nouvelle
collection
ni d’algorithme dédié de type filtre, agrégation, mapping, etc.
Vous écrirez la condition du filtre, la donnée à agréger, etc.
Dans le cas contraire : vous faites fausse route !
Ce cours est basé sur le tutoriel d’Oracle : Oracle Java Tutorial

Cours Java - F. Michel


34 / 34

Vous aimerez peut-être aussi