Java - Framework de collections

Avant Java 2, Java fournissait des classes ad hoc telles que Dictionary, Vector, Stack, et Propertiespour stocker et manipuler des groupes d'objets. Bien que ces cours aient été très utiles, ils manquaient d'un thème central et unificateur. Ainsi, la façon dont vous avez utilisé Vector était différente de la façon dont vous avez utilisé Propriétés.

Le cadre des collections a été conçu pour répondre à plusieurs objectifs, tels que:

  • Le cadre devait être performant. Les implémentations des collections fondamentales (tableaux dynamiques, listes chaînées, arborescences et tables de hachage) devaient être très efficaces.

  • Le cadre devait permettre à différents types de collections de fonctionner de manière similaire et avec un degré élevé d'interopérabilité.

  • Le framework devait étendre et / ou adapter une collection facilement.

À cette fin, l'ensemble du framework de collections est conçu autour d'un ensemble d'interfaces standard. Plusieurs implémentations standard telles queLinkedList, HashSet, et TreeSet, de ces interfaces sont fournies que vous pouvez utiliser telles quelles et vous pouvez également implémenter votre propre collection, si vous le souhaitez.

Un framework de collections est une architecture unifiée pour représenter et manipuler des collections. Tous les frameworks de collections contiennent les éléments suivants -

  • Interfaces- Ce sont des types de données abstraits qui représentent des collections. Les interfaces permettent de manipuler les collections indépendamment des détails de leur représentation. Dans les langages orientés objet, les interfaces forment généralement une hiérarchie.

  • Implementations, i.e., Classes- Ce sont les implémentations concrètes des interfaces de collecte. Ce sont essentiellement des structures de données réutilisables.

  • Algorithms- Ce sont les méthodes qui effectuent des calculs utiles, tels que la recherche et le tri, sur les objets qui implémentent des interfaces de collection. Les algorithmes sont dits polymorphes: c'est-à-dire que la même méthode peut être utilisée sur de nombreuses implémentations différentes de l'interface de collecte appropriée.

En plus des collections, le framework définit plusieurs interfaces et classes de carte. Les cartes stockent des paires clé / valeur. Bien que les cartes ne soient pas des collections au bon usage du terme, elles sont entièrement intégrées aux collections.

Les interfaces de la collection

Le cadre des collections définit plusieurs interfaces. Cette section donne un aperçu de chaque interface -

Sr.No. Interface et description
1 L'interface de collecte

Cela vous permet de travailler avec des groupes d'objets; il est au sommet de la hiérarchie des collections.

2 L'interface de liste

Cela prolonge Collection et une instance de List stocke une collection ordonnée d'éléments.

3 L'ensemble

Cela étend Collection pour gérer les ensembles, qui doivent contenir des éléments uniques.

4 Le SortedSet

Cela étend Set pour gérer les ensembles triés.

5 La carte

Cela mappe les clés uniques aux valeurs.

6 La carte.

Ceci décrit un élément (une paire clé / valeur) dans une carte. Ceci est une classe interne de Map.

sept La SortedMap

Cela étend Map afin que les clés soient conservées dans un ordre croissant.

8 L'énumération

Cette interface héritée définit les méthodes par lesquelles vous pouvez énumérer (obtenir un à la fois) les éléments d'une collection d'objets. Cette interface héritée a été remplacée par Iterator.

Les classes de collection

Java fournit un ensemble de classes de collection standard qui implémentent des interfaces de collection. Certaines des classes fournissent des implémentations complètes qui peuvent être utilisées telles quelles et d'autres sont des classes abstraites, fournissant des implémentations squelettiques qui sont utilisées comme points de départ pour créer des collections concrètes.

Les classes de collection standard sont résumées dans le tableau suivant -

Sr.No. Classe et description
1

AbstractCollection

Implémente la plupart de l'interface de collection.

2

AbstractList

Étend AbstractCollection et implémente la plupart de l'interface List.

3

AbstractSequentialList

Étend AbstractList pour une utilisation par une collection qui utilise l'accès séquentiel plutôt que aléatoire de ses éléments.

4 LinkedList

Implémente une liste chaînée en étendant AbstractSequentialList.

5 Liste des tableaux

Implémente un tableau dynamique en étendant AbstractList.

6

AbstractSet

Étend AbstractCollection et implémente la plupart de l'interface Set.

sept HashSet

Étend AbstractSet pour une utilisation avec une table de hachage.

8 LinkedHashSet

Étend HashSet pour permettre les itérations de l'ordre d'insertion.

9 TreeSet

Implémente un ensemble stocké dans une arborescence. Étend AbstractSet.

dix

AbstractMap

Implémente la plupart de l'interface de la carte.

11 HashMap

Étend AbstractMap pour utiliser une table de hachage.

12 TreeMap

Étend AbstractMap pour utiliser un arbre.

13 WeakHashMap

Étend AbstractMap pour utiliser une table de hachage avec des clés faibles.

14 LinkedHashMap

Étend HashMap pour permettre les itérations d'ordre d'insertion.

15 IdentityHashMap

Étend AbstractMap et utilise l'égalité de référence lors de la comparaison de documents.

Les classes AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList et AbstractMap fournissent des implémentations squelettiques des interfaces de collection de base, afin de minimiser l'effort requis pour les implémenter.

Les classes héritées suivantes définies par java.util ont été discutées dans le chapitre précédent -

Sr.No. Classe et description
1 Vecteur

Cela implémente un tableau dynamique. Il est similaire à ArrayList, mais avec quelques différences.

2 Empiler

Stack est une sous-classe de Vector qui implémente une pile standard dernier entré, premier sorti.

3 dictionnaire

Dictionary est une classe abstraite qui représente un référentiel de stockage clé / valeur et fonctionne un peu comme Map.

4 Hashtable

Hashtable faisait partie du java.util original et est une implémentation concrète d'un dictionnaire.

5 Propriétés

Properties est une sous-classe de Hashtable. Il est utilisé pour maintenir des listes de valeurs dans lesquelles la clé est une chaîne et la valeur est également une chaîne.

6 BitSet

Une classe BitSet crée un type spécial de tableau contenant des valeurs de bits. Ce tableau peut augmenter en taille selon les besoins.

Les algorithmes de collecte

Le cadre des collections définit plusieurs algorithmes qui peuvent être appliqués aux collections et aux cartes. Ces algorithmes sont définis comme des méthodes statiques dans la classe Collections.

Plusieurs méthodes peuvent lancer un ClassCastException, qui se produit lorsqu'une tentative est faite pour comparer des types incompatibles, ou un UnsupportedOperationException, qui se produit lorsqu'une tentative est faite pour modifier une collection non modifiable.

Les collections définissent trois variables statiques: EMPTY_SET, EMPTY_LIST et EMPTY_MAP. Tous sont immuables.

Sr.No. Algorithme et description
1 Les algorithmes de collecte

Voici une liste de toutes les implémentations de l'algorithme.

Comment utiliser un itérateur?

Souvent, vous souhaiterez parcourir les éléments d'une collection. Par exemple, vous souhaiterez peut-être afficher chaque élément.

Le moyen le plus simple de procéder consiste à utiliser un itérateur, qui est un objet qui implémente l'interface Iterator ou ListIterator.

Iterator vous permet de parcourir une collection, d'obtenir ou de supprimer des éléments. ListIterator étend Iterator pour permettre le parcours bidirectionnel d'une liste et la modification d'éléments.

Sr.No. Méthode et description de l'itérateur
1 Utilisation de Java Iterator

Voici une liste de toutes les méthodes avec des exemples fournis par les interfaces Iterator et ListIterator.

Comment utiliser un comparateur?

TreeSet et TreeMap stockent les éléments dans un ordre trié. Cependant, c'est le comparateur qui définit précisément ce que signifie l' ordre trié .

Cette interface nous permet de trier une collection donnée de différentes manières. De plus, cette interface peut être utilisée pour trier toutes les instances de n'importe quelle classe (même les classes que nous ne pouvons pas modifier).

Sr.No. Méthode et description de l'itérateur
1 Utilisation du comparateur Java

Voici une liste de toutes les méthodes avec des exemples fournis par Comparator Interface.

Sommaire

Le framework de collections Java donne au programmeur accès à des structures de données préemballées ainsi qu'à des algorithmes pour les manipuler.

Une collection est un objet qui peut contenir des références à d'autres objets. Les interfaces de collecte déclarent les opérations qui peuvent être effectuées sur chaque type de collection.

Les classes et interfaces du framework de collections se trouvent dans le package java.util.