ENPC - Programmation - Séance 9

Les collections

Les API de Java fournissent une grande variété de structures de données, déjà codées avec leurs fonctionnalités, permettant de stocker et de manipuler des éléments. Ces structures de données sont appelées de façon générique des collections et sont représentées par l'interface Collection du package java.util. En réalité, certaines structures de données appelées table et représentées par l'interface Map ne sont pas considérées comme des collections: la hierarchie des principales classes concernées est donnée par le schéma à la fin de cette feuille. Nous y reviendrons.

En fait, cette interface est la plus générale de toutes les collections et possède différents sous-types (sous-interfaces et/ou classes abstraites) qui conduisent à quelques classes concrètes implantant des fonctionnalités de types de collection particuliers. Le dessin ci-dessous représente schématiquement leur organisation.

Organisation des collections de Java

Les deux grandes catégories de collections sont:

Exercice 1: Écrire un programme qui accepte, sur la ligne de commande, une suite de chaînes de caractères et qui stocke dans un ArrayList celles qui contiennent au moins une fois le caractère 'a'.

Exercice 2: Faire afficher à l'écran toutes les chaînes ainsi stockées dans la structure ArrayList, en utilisant une boucle sur la taille de la liste (méthode size()), puis en utilisant un itérateur (méthode iterator() héritée de la classe abstraite AbstractList et retournant un objet de la classe Iterator).

Exercice 3: Faire en sorte que les chaînes ajoutées dans la structure le soient dans l'ordre lexicographique.

Supposons maintenant que l'on veut stocker toutes les chaînes sur la ligne de commande, mais une seule fois chacune d'elles (interdire les doublons). Il est alors préférable d'utiliser une structure d'ensemble, implantant l'interface Set.

Exercice 4: Écrire un programme qui stocke une fois et une seule chacune des occurrences des chaînes fournies sur la ligne de commande.

Exercice 5: Que faut-il modifier dans ce programme pour qu'il stocke les chaînes dans l'ordre alphabétique?

Exercice 6: Comment faire pour que l'ordre utilisé ne soit pas l'ordre lexicographique croissant, mais le nombre de caractères croissant dans les chaînes.

Le pattern d'itération

Exercice 7: Écrire une classe TableauIter qui peut stocker un nombre fini d'éléments (dans un tableau) et qui dispose d'une méthode iterator() retournant une itération (de la classe Iterator) des éléments stockés. On pourra pour cela utiliser une classe interne.

Organisation des tables (ou Map) en Java


Etienne.Duris[at]univ-mlv.fr - © École Nationale des Ponts et Chaussées - Janvier 2002 - http://www-igm.univ-mlv.fr/~duris/ENPC/