Java - Cadre de collections
Avant Java 2, Java fournissait des classes ad hoc telles que Dictionary, Vector, Stack, et Propriétés pour stocker et manipuler des groupes d'objets. Bien que ces cours aient été très utiles, il leur manquait 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é Properties.
Le cadre de collecte a été conçu pour répondre à plusieurs objectifs, tels que −
-
Le framework devait être performant. Les implémentations des collections fondamentales (tableaux dynamiques, listes chaînées, arbres 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 cadre des collections est conçu autour d'un ensemble d'interfaces standard. Plusieurs implémentations standard telles que LinkedList, 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.
-
Implémentations, c'est-à-dire, Classes − Ce sont les implémentations concrètes des interfaces de collecte. Essentiellement, ce sont des structures de données réutilisables.
-
Algorithmes − Ce sont les méthodes qui effectuent des calculs utiles, tels que la recherche et le tri, sur des 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 dans le bon usage du terme, mais ils sont entièrement intégrés aux collections.
Les interfaces de collecte
Le framework de 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 se situe au sommet de la hiérarchie des collections. |
2 | L'interface de liste Cela étend la 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 | L'ensemble trié Cela étend Set pour gérer les ensembles triés. |
5 | La carte Cela mappe des clés uniques à des valeurs. |
6 | La carte.Entrée Ceci décrit un élément (une paire clé/valeur) dans une carte. Il s'agit d'une classe interne de Map. |
7 | La carte triée 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 collecte
Java fournit un ensemble de classes de collection standard qui implémentent des interfaces 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 | |
2 | |
3 | |
4 | Liste liée Implémente une liste chaînée en étendant AbstractSequentialList. |
5 | ArrayList Implémente un tableau dynamique en étendant AbstractList. |
6 | |
7 | HashSet Étend AbstractSet pour une utilisation avec une table de hachage. |
8 | LinkedHashSet Étend HashSet pour permettre les itérations d'ordre d'insertion. |
9 | ArbreEnsemble Implémente un ensemble stocké dans un arbre. Étend AbstractSet. |
10 | |
11 | HashMap Étend AbstractMap pour utiliser une table de hachage. |
12 | Carte arborescente É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é des références lors de la comparaison de documents. |
La AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList et AbstractMap les classes 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é abordé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 | Table de hachage 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 qui contient des valeurs de bit. Ce tableau peut augmenter en taille selon les besoins. |
Les algorithmes de collecte
La structure 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 au sein de la classe Collections.
Plusieurs des méthodes peuvent lancer une ClassCastException , qui se produit lorsqu'une tentative est faite pour comparer des types incompatibles, ou une UnsupportedOperationException , qui se produit lors d'une tentative de modification d'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 d'algorithmes. |
Comment utiliser un itérateur ?
Souvent, vous souhaiterez parcourir les éléments d'une collection. Par exemple, vous pouvez afficher chaque élément.
La façon la plus simple de le faire est d'employer 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 l'itérateur Java 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 quel ordre trié signifie.
Cette interface nous permet de trier une collection donnée de différentes manières. Cette interface peut également ê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. |
Résumé
Le framework de collections Java donne au programmeur l'accès à des structures de données prépackagé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 collection déclarent les opérations réalisables sur chaque type de collection.
Les classes et les interfaces du framework de collections se trouvent dans le package java.util.
Java