Notes d'étude sur le cadre de collecte Java
La classe de collection Java peut être utilisée pour stocker plusieurs objets de nombres variables et peut implémenter des structures de données communes telles que des piles, des files d'attente, etc. Contrairement aux tableaux, la longueur des tableaux est immuable. Les éléments du tableau peuvent stocker des types de base et des types d'objets, tandis que les collections ne peuvent stocker que des objets (essentiellement des références d'objetsvariables), les ensembles Java peuvent être approximativement. divisé en Set, List et Map, où Set représente un ensemble non ordonné et non répétable, et List représente un ensemble ordonné et répétable, Map représente. une collection avec une relation de mappage, la clé est unique dans la carte et la valeur est répétable. Parmi eux, Set, List et la file d'attente nouvellement ajoutées après java5 sont des sous-interfaces dérivées de CollectionInterface
Les collections Set ne sont pas autorisées à contenir les mêmes éléments, et il n'y a aucune évidence ordre entre les objets de la collection
HashSet, LinkedHashSet et TreeSet sont les principales classes d'implémentation de Set
HashSet ne peut pas garantir l'ordre des éléments, HashSet n'est pas synchronisé et les éléments de l'ensemble HashSet sont autorisés être null, lorsqu'un objet est stocké dans un HashSet, le HashSet appellera la méthode hashCode de l'objet pour obtenir la valeur hashCode de l'objet et déterminera l'emplacement de stockage de l'objet dans le HashSet en fonction sur la valeur hashCode. Dans HashSet, on juge si deux objets sont égaux en comparant les valeurs de retour des méthodes equals() et hashCode()
LinkedHashSet est une sous-classe de HashSet, mais il utilise également une liste chaînée pour maintenir le. ordre des éléments, de sorte que Les éléments semblent être enregistrés dans l'ordre d'insertion. Parce qu'il doit conserver l'ordre d'insertion des éléments, les performances sont légèrement inférieures à celles de HashSet puisqu'il s'agit toujours d'un HashSet, le même élément. ne peut pas être répété
TreeSet
TreeSet est la classe d'implémentation de l'interface SortedSet. De même, TreeSet peut garantir que les éléments de la collection sont dans l'état trié que TreeSet appellera. la méthode comparTo (Object obj) des éléments de la collection pour comparer la relation de taille entre les éléments, puis définir la collection Les éléments sont classés par ordre croissant, c'est-à-dire un tri naturel. TreeSet peut également implémenter un tri personnalisé via l'interface Comparator. Lors de la création d'un objet de collection TreeSet, un objet Comparator est fourni pour être associé à la collection TreeSet, et l'objet Comparator est responsable de la logique de tri des éléments de la collection.
Comparaison des performances de divers ensemblesLes performances de HashSet sont toujours meilleures que celles de TreeSet, car TreeSet nécessite des algorithmes supplémentaires pour maintenir l'ordre des éléments de l'ensemble. TreeSet ne doit être utilisé que lorsqu'un ensemble doit le faire. être conservé trié. Sinon, HashSet doit être utilisé. De plus, LinkedHashSet est une sous-classe de HashSet, correspondant aux opérations ordinaires d'insertion et desuppression. Les performances de LinkedHashSet sont légèrement plus lentes que celles de HashSet. Cela est dû à la surcharge causée par la maintenance de la liste chaînée. en raison de la liste chaînée, ce sera plus rapide lors de la traversée de LinkedHashSet. Cependant, aucune des trois classes d'implémentation de set n'est threadsafe. Vous pouvez généralement utiliser la méthode synchronizedSortedSet de la classe d'outils Collections pour envelopper la collection set. effectué au moment de la création Par exemple : SortedSet s = Collections.synchronizedSortedSet(<a href="http://www.php.cn/wiki/165.html" target="_blank">new<br>TreeSet(.. .));</a>
SortedSet s = Collections.synchronizedSortedSet(<a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> TreeSet(...));
La collection
List représente une collection ordonnée et répétable. Les éléments de la collection ont leurs index correspondants
ArrayList et Vector sont des listes. Il existe deux types typiques. implémentations de LinkedList
où les classes ArrayList et Vector encapsulent un tableau Object[] dynamique qui permet la réallocation, lorsque le nombre d'éléments est ajouté. Lorsque la longueur du tableau est dépassée, la valeur initiale la longueur est automatiquement augmentée. La différence significative entre ArrayList et Vector est qu'ArrayList n'est pas thread-safe, tandis que Vector est thread-safe et ne nécessite pas de programme pour assurer la synchronisation de la collection. Étant donné que Vector est thread-safe, les performances des couleurs de Vector sont inférieures à celles de ArrayList. Même si la sécurité des threads doit être assurée, il n'est généralement pas recommandé d'utiliser Vector. Utilisez plutôt les méthodes appropriées de la classe d'outils Collections pour envelopper ArrayList dans une classe thread-safe.
Vector a également une sous-classe appelée Stack, qui est utilisée pour simuler la structure de données d'une pile Dernier entré, premier sorti Puisqu'il s'agit d'une relation héritage , Stack est également thread-safe, donc. ses performances sont relativement médiocres. Il est recommandé d'utiliser une structure de données telle qu'une pile, vous pouvez envisager d'utiliser LinkedList.
LinkedList est également une classe d'implémentation de List. Implémentation de la liste. Il est optimisé pour l'accès séquentiel aux éléments de la collection, en particulier l'insertion. Il est très rapide de supprimer des éléments. LinkedList implémente à la fois l'interface List et l'interface Deque. empiler. La collection Queue est utilisée pour simuler la structure de données d'une file d'attente, premier entré, dernier sorti Deque est une sous-interface de Queue, représentant une file d'attente à double extrémité, permettant de manipuler les éléments de la file d'attente des deux côtés.
La différence entre LinkedList et ArrayList
Étant donné qu'ArrayList stocke les éléments de la collection en interne sous la forme d'un tableau, il a de meilleures performances lors de l'accès aléatoire aux éléments de la collection, tandis que LinkedList est sous la forme d'une liste chaînée. Il est utilisé pour sauvegarder les éléments de la collection, donc les performances d'accès aléatoire sont médiocres, mais les performances sont très bonnes lors de l'insertion et de la suppression d'éléments.
La carte est utilisée pour enregistrer des données avec des relations de mappage. La clé et la valeur peuvent être n'importe quel type de données de référence, mais la valeur clé de la carte est unique et ne peut pas être répétée.
HashMap et Hashtable le sont. Maps Deux classes d'implémentation
Hashtable est une classe d'implémentation de Map thread-safe, mais HashMap n'est pas thread-safe, donc les performances de HashMap sont légèrement meilleures.
De plus, Hashtable n'autorise pas l'utilisation de null comme clé et valeur. Essayer de mettre null dans Hashtable provoquera une exception de pointeur null, mais HashMap peut utiliser null comme clé et valeur. Puisque les clés ne peuvent pas être répétées, HashMap peut le faire. n'avoir qu'une seule clé nulle. Mais il peut y avoir plusieurs valeurs nulles.
Le critère pour juger de l'égalité de deux clés dans HashMap et Hashtable est que les valeurs de retourdes deux clés via les méthodes equals() et hashCode() sont égales.
LinkedHashMap est une sous-classe de HashMap. LinkedHashMap utilise également une liste doublement chaînée pour maintenir l'ordre des clés, c'est-à-dire que l'ordre d'itération est cohérent avec l'ordre d'insertion. Étant donné que l'ordre d'insertion des éléments doit être conservé, les performances globales sont légèrement inférieures à celles de HashMap.
TreeMap
Il existe également une interface SortedMap sous Map. L'interface SortedMap est une autre classe d'implémentation TreeMap lorsque TreeMap enregistre les paires clé-valeur, les nœuds doivent être triés en fonction du tri TreeMap. est divisé en tri naturel.Et tri personnalisé.Dans le tri naturel,la clé doit implémenter l'interface Comparable,un objet Comparator doit être transmis lors de la création d'un TreeMap, et cet objet triera les clés dans le TreeMap. Similaire à TreeSet. TreeMap est plus lent que HashMap et Hashtable car il doit maintenir l'ordre.
La différence entre Collection et Collections
Collection est une interface du framework Java de collectionframework
Collections est une classe d'outils dans le framework de collection, qui fournit un grand nombre De méthodes sont utilisées pour trier les éléments de la collection, requête , modifier et autres opérations. Il fournit également des méthodes pour définir les objets de collection pour qu'ils soient immuables et réaliser un contrôle de synchronisation des collections d'objets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo
