Java Types génériques et paramétrés
Emballage et déballage automatique
Depuis Java 5, il existe l’emballage et le déballage automatique :
Stack<Integer>stack =new Stack<Integer>();
int intValue = 2;
stack.push(intValue);
// ,→emballage automatique du int dans un Integer.
intValue =stack.pop();
// ,→déballage automatique du int.
Attention : il est important de noter que des allocations sont eectuées
lors des emballages sans que des new soient présents dans le code.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 124 / 171
Java Types génériques et paramétrés
Structures de données Java
Des interfaces :
▶Collection<V> : Groupe d’éléments
▶List<V> : Liste d’éléments ordonnés et accessibles via leur indice
▶Set<V> : Ensemble d’éléments uniques
▶Queue<V> : Une le d’éléments (FIFO)
▶Deque<V> : Une le à deux bouts (FIFO-LIFO)
▶Map<K,V> : Ensemble de couples clé-valeur.
Il est préférable d’utiliser les interfaces pour typer les variables :
List<Integer>list =new ArrayList<Integer>();
/* code qui utilise list. */
car on peut changer la structure de données facilement :
List<Integer>list =new LinkedList<Integer>();
/* code qui utilise list et qui n'a pas à être modifié. */
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 125 / 171
Java Types génériques et paramétrés
Structures de données Java
Implémentations de List<V> :
▶ArrayList<V> : Tableau dont la taille varie dynamiquement.
▶LinkedList<V> : Liste chaînée.
▶Stack<V> : Pile (mais une implémentation de Deque est préférable).
Implémentations de Map<K,V> :
▶HashMap : Table de hachage.
▶LinkedHashMap : Table de hachage + listes chainées.
▶TreeMap : Arbre rouge-noir (éléments comparables).
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 126 / 171
Java Types génériques et paramétrés
Structures de données Java
Implémentations de Set<V> :
▶HashSet<V> : Avec une HashMap.
▶LinkedHashSet<V> : Avec une LinkedHashMap.
▶TreeSet<V> : Avec une TreeMap.
Implémentations de Deque<V> :
▶ArrayDeque<V> : Avec un tableau dynamique.
▶LinkedList<V> : Avec une liste chaînée.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 127 / 171