Introduction

Presque tous les programmes doivent stocker un ensemble de données. Il peut s'agir de chaînes et de nombres, d'objets, etc. Les baies sont une superbe solution de stockage. Mais les tableaux ont certaines limites. Par exemple, leur taille est fixe, les éléments ne peuvent pas être supprimés et vous ne pouvez pas insérer d'éléments au milieu. Des collections ont été créées pour contourner ces limitations et d'autres. Tous les types de collections (et il y en a beaucoup, comme nous le verrons plus loin dans cette leçon) ont la possibilité de se redimensionner dynamiquement. Certains types de collection peuvent stocker des éléments ordonnés et mettre automatiquement les nouveaux éléments en ordre au fur et à mesure qu'ils sont ajoutés.

Dans cette leçon, nous allons nous familiariser avec la hiérarchie des classes des collections de base dans Java Collections Framework . Il existe également diverses bibliothèques alternatives qui étendent les capacités du standard Java Collections Framework . Le plus populaire d'entre eux est Guava (Google Collections Library).

* Toutes les interfaces et classes ne sont pas représentées dans le diagramme. Certains ont été omis pour faciliter la compréhension.

Interfaces de base

Le diagramme montre qu'il existe deux interfaces de base qui sont implémentées pour former le reste des classes et des interfaces.

Jetons un coup d'œil à ces interfaces :

  1. Collection — Une collection ordinaire qui contient un ensemble d'éléments (objets). Cette collection a des méthodes de base pour travailler avec des éléments : insert ( add , addAll ), remove ( remove , removeAll , clear ), search ( contains , containsAll ), vérifier si la collection est vide ( isEmpty ) et obtenir la taille ( size ).

  2. Map — Une collection structurée en paires clé-valeur. De plus, chaque clé d'une Map est unique : il n'y a pas deux clés qui ont des valeurs identiques. Cette collection est parfois appelée un dictionnaire . La carte est une interface distincte. Il n'implémente pas l' interface Collection , mais fait partie du Java Collections Framework .

Méthodes utiles pour travailler avec des éléments dans une Map :

  • insérer ( mettre , mettreTout )

  • obtenir ( obtenir , jeu de clés , valeurs , jeu d'entrées )

  • supprimer ( supprimer , effacer )

  • rechercher ( contientClé , contientValeur )

  • vérifie si la collection est vide ( isEmpty )

  • obtenir la taille ( taille )

Parlons maintenant plus de chacun d'eux.

Interface de collecte

L' interface Collection étend l' interface Iterable , qui a une seule méthode : iterator() . Pour nous, cela signifie que toute collection qui hérite d'Iterable pourra retourner un itérateur.

Un itérateur est un objet spécial que vous pouvez utiliser pour accéder aux éléments de n'importe quelle collection, quelle que soit son implémentation spécifique.

La figure montre que 3 interfaces héritent de l' interface Collection : List , Queue et Set . Nous allons maintenant examiner brièvement chacun d'eux.

List est une collection ordonnée qui autorise les valeurs en double. Une particularité d'une Liste est que ses éléments sont numérotés et accessibles par numéro (index).

Une file d'attente stocke les éléments dans l'ordre dans lequel ils ont été ajoutés à la file d'attente.

Contrairement à une liste, un Set représente une collection non ordonnée qui n'autorise pas les éléments répétés. L' interface Set correspond au concept d' ensemble mathématique .

Implémentations de l'interface Map

Nous pouvons voir que l' interface Map représente un mappage entre des clés et des valeurs uniques.


interface Map<K, V>

K est le type des clés et V est le type des valeurs stockées.

À l'aide d'une clé, nous pouvons extraire des données d'un Map . Pour ajouter un élément à un Map , nous devons spécifier une clé et une valeur.

Regardons quelques implémentations de Map :

  1. HashMap est une implémentation de Map basée sur des tables de hachage. Il peut stocker des clés et des valeurs de tout type, y compris null . L'ordre des éléments n'est pas garanti.

  2. LinkedHashMap est une structure de données qui stocke les données sous la forme d'une liste liée d'éléments. Les éléments apparaissent dans la liste dans l'ordre dans lequel ils ont été ajoutés.

  3. TreeMap implémente l' interface SortedMap (via l' interface NavigableMap ). Les éléments de cette structure sont stockés dans un ordre trié (lorsqu'un nouvel élément est ajouté, la collection est triée automatiquement). TreeMap est idéal pour stocker de grandes quantités de données triées avec une récupération rapide.

Collections obsolètes :

Java a des collections obsolètes des versions précédentes (afin de maintenir la rétrocompatibilité). Ces anciennes collections ne doivent pas être utilisées dans le nouveau code :

  • Énumération — analogue à l'interface Iterator ;

  • Vector — une liste ordonnée d'éléments et analogue à la classe ArrayList ;

  • Stack - une implémentation de la structure de données de la pile, qui stocke et manipule des éléments comme la façon dont vous interagiriez avec une pile de livres. Il existe des méthodes pour ajouter des éléments à la pile ( push ) et les retirer ( pop );

  • Dictionary — analogue à l' interface Map , mais c'est une classe abstraite ;

  • Hashtable — analogue à HashMap .

Vous pouvez en savoir plus sur le cadre des collections dans cet article .