Java LanguageCollections


Introduction

Le framework de collections dans java.util fournit un certain nombre de classes génériques pour des ensembles de données avec des fonctionnalités qui ne peuvent pas être fournies par des tableaux réguliers.

Le framework de collections contient des interfaces pour Collection<O> , avec les sous-interfaces principales List<O> et Set<O> , ainsi que la collection de mappages Map<K,V> . Les collections sont l'interface racine et sont implémentées par de nombreux autres cadres de collecte.

Remarques

Les collections sont des objets pouvant stocker des collections d'autres objets à l'intérieur d'eux. Vous pouvez spécifier le type de données stockées dans une collection à l'aide de Generics .

Les collections utilisent généralement les espaces de noms java.util ou java.util.concurrent .

Java SE 1.4

Java 1.4.2 et les versions ultérieures ne prennent pas en charge les génériques. En tant que tel, vous ne pouvez pas spécifier les paramètres de type que contient une collection. En plus de ne pas avoir de type de sécurité, vous devez également utiliser des moulages pour récupérer le type correct dans une collection.

Outre Collection<E> , il existe plusieurs types principaux de collections, dont certains comportent des sous-types.

  • List<E> est une collection ordonnée d'objets. Il est similaire à un tableau, mais ne définit pas de limite de taille. La taille des implémentations augmentera généralement en interne pour accueillir de nouveaux éléments.
  • Set<E> est une collection d'objets qui n'autorise pas les doublons.
    • SortedSet<E> est un Set<E> qui spécifie également l'ordre des éléments.
  • Map<K,V> est une collection de paires clé / valeur.
    • SortedMap<K,V> est une Map<K,V> qui spécifie également l'ordre des éléments.
Java SE 5

Java 5 ajoute un nouveau type de collection:

  • Queue<E> est un ensemble d'éléments destinés à être traités dans un ordre spécifique. L'implémentation spécifie s'il s'agit de FIFO ou LIFO. Cela rend obsolète la classe Stack .
Java SE 6

Java 6 ajoute de nouveaux sous-types de collections.

  • NavigableSet<E> est un Set<E> avec des méthodes de navigation spéciales intégrées.
  • NavigableMap<K,V> est une Map<K,V> avec des méthodes de navigation spéciales intégrées.
  • Deque<E> est une Queue<E> pouvant être lue de chaque côté.

Notez que les éléments ci-dessus sont tous des interfaces. Pour les utiliser, vous devez rechercher les classes d'implémentation appropriées, telles que ArrayList , HashSet , HashMap ou PriorityQueue .

Chaque type de collection a plusieurs implémentations qui ont des mesures de performance et des cas d'utilisation différents.

Notez que le principe de substitution Liskov s'applique aux sous-types de collection. En d'autres SortedSet<E> , un SortedSet<E> peut être transmis à une fonction qui attend un Set<E> . Il est également utile de lire les Paramètres liés dans la section Génériques pour plus d'informations sur l'utilisation des collections avec héritage de classe.

Si vous voulez créer vos propres collections, il peut être plus facile d'hériter l'une des classes abstraites (comme AbstractList ) au lieu d'implémenter l'interface.

Java SE 1.2

Avant la version 1.2, vous deviez utiliser les classes / interfaces suivantes:

  • Vector au lieu de ArrayList
  • Dictionary au lieu de Map . Notez que Dictionary est aussi une classe abstraite plutôt qu'une interface.
  • Hashtable au lieu de HashMap

Ces classes sont obsolètes et ne doivent pas être utilisées dans le code moderne.

Collections Exemples Liés