Article de reference

framework de collections Java

Hiérarchie des classes et interfaces du framework de collections Java, à l'exclusion des types du package java.util.concurrent et de quelques autres classes. Le framework de col...

Hiérarchie des classes et interfaces du framework de collections Java, à l'exclusion des types du package java.util.concurrent et de quelques autres classes.

Le framework de collections Java est un ensemble de classes et d'interfaces qui implémentent des structures de données de collection couramment réutilisables ( collections ).

Bien que qualifié de framework , il fonctionne comme une bibliothèque . Le framework Collections fournit à la fois des interfaces définissant diverses collections et des classes les implémentant.

des classes enveloppes telles que ` int`, `int` ou ` int`. covariants . Ceci constitue un avantage des objets génériques par opérateur diamant

CollectionLes s sont génériques et donc réifiés , mais les tableaux ne sont pas réifiés.

Histoire

Les implémentations de collections dans les versions de la plateforme Java antérieures à JDK 1.2 incluaient quelques classes de structures de données, mais ne contenaient pas de framework de collections. Les méthodes standard pour regrouper des objets Java étaient les classes `array`, `List` Vectoret ` HashtableCollections`, qui, malheureusement, n'étaient pas faciles à étendre et n'implémentaient pas d'interface membre standard. de structures de données de collection réutilisables , plusieurs frameworks indépendants ont été développés, les plus utilisés étant le package Collections de Doug Lea , et la bibliothèque de collections génériques bibliothèque de modèles standard C++ (STL). Joshua Bloch et introduit dans le JDK 1.2 . Il réutilisait de nombreuses idées et classes du package Collections de Doug Lea , qui fut par conséquent déprécié. Sun Microsystems a choisi de ne pas utiliser les concepts de JGL, car l'entreprise souhaitait un framework compact et la cohérence avec C++ n'était pas l'un de ses objectifs. package de concurrence , comprenant de nouvelles classes liées aux collections. Une version mise à jour de ces utilitaires de concurrence a été incluse dans JDK 5.0 à partir de JSR 166 .

Architecture

La plupart des collections en Java qui ne sont pas des maps dérivent de l' for-each . (L' Iterableinterface fournit la les files d’attente , les dictionnaires , les listes et les ensembles .

Les files d'attente permettent au programmeur d'insérer des éléments dans un ordre précis et de les récupérer dans le même ordre. Une liste d'attente en est un exemple. Les interfaces de base pour les files d'attente sont appelées Queue

Les dictionnaires/cartes stockent des références à des objets, chaque clé permettant d'accéder à la valeur de l'objet. Une carte d'identité est un exemple de clé. L'interface de base pour les dictionnaires/cartes est appelée `Dictionary` Map.

Les listes sont des collections finies pouvant stocker plusieurs fois la même valeur.

Les ensembles sont des collections non ordonnées qui peuvent être parcourues et qui contiennent chaque élément au plus une fois. L'interface de base pour les ensembles est appelée Set.

Interface de liste

Dans le framework Collections, les listes sont implémentées via une composition plutôt que d'héritage dans les bibliothèques de la plateforme Java, car en informatique , un vecteur n'est généralement pas une pile . La composition aurait été plus appropriée dans ce cas.

du dernier entré, premier sorti (LIFO) ; par exemple, l'objet ajouté en dernier est renvoyé en premier. ` Stack` est une implémentation standard d'une pile fournie par Java.extendsStackjava.util.Stack

La Stackclasse Stack représente une pile d'objets de type dernier entré, premier sorti (LIFO). La classe Stack possède cinq opérations supplémentaires permettant Vectorde traiter une pile comme une empilement Stack. Les opérations classiques d'ajout des processeurs multicœurs et permet une utilisation plus élevée du processeur .

FIFO (premier entré, premier sorti) . Cette interface est implémentée par java.util.LinkedList, OpenJDK utilisait deux implémentations invisibles pour le client : `String` et `String` . Si `String` n'apportait plus d'amélioration des performances pour les petits types énumérés, elle pourrait être supprimée de la bibliothèque sans impacter négativement la bibliothèque de collections Java. type énuméré devant être placés dans un ensemble, il utilisait le modèle d'énumération d'entiers, où chaque constante se voyait attribuer une puissance de 2 différente. Cette représentation binaire permet d'utiliser l'opération OU bit à bit, afin de combiner les constantes en un ensemble, également appelé champ de bits . Cette représentation par champ de bits permet d'effectuer des opérations ensemblistes et des calculs arithmétiques bit à bit efficaces, tels que l'intersection et l'union.

Cependant, la représentation par champs de bits présente de nombreux problèmes . Un champ de bits est moins lisible qu'une constante d'énumération entière. De plus, si les éléments sont représentés par des champs de bits, il est impossible de parcourir l'ensemble de ces éléments.

Une approche alternative recommandée consiste à utiliser un objet `List` , où une énumération d'entiers est utilisée à la place d'un champ de bits . Cette approche utilise un objet `List` pour représenter l'ensemble des valeurs appartenant au même type. Puisque l'objet `List` implémente l' interface `List` et ne nécessite plus d'opérations bit à bit, cette approche est plus sûre du point de vue des types. De plus, il existe de nombreuses fabriques statiques permettant l'instanciation d'objets, telles que la méthode `Instanciation`. arbre rouge-noir implémenté par un sécurité de type d'un tableau tout en profitant de ses performances supérieures. table de hachage . Les hachages des clés sont utilisés pour trouver les éléments dans différents compartiments. Il s'agit d'une collection basée sur le hachage. liste doublement chaînée entre les éléments, permettant ainsi d'y accéder dans l'ordre de leur insertion. Elle contient une méthode appelée par la méthode `map` à chaque ajout d'une nouvelle clé . La méthode `map` supprime son entrée la plus ancienne lorsque `map` renvoie `true`. Cette méthode peut être surchargée. Apache Commons Collections, qui ajoute des types de collections tels qu'un sac et une carte bidirectionnelle, ainsi que des utilitaires pour créer des unions et des intersections.

Google a publié ses propres bibliothèques de collections dans le cadre des bibliothèques Guava .

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index