Maison  >  Article  >  Java  >  Que signifie l’ensemble Java ?

Que signifie l’ensemble Java ?

(*-*)浩
(*-*)浩original
2019-05-31 13:41:015578parcourir

L'interface java.util.Set est la même que l'interface java.util.List. Elle hérite également de l'interface Collection. Elle est fondamentalement la même que les méthodes de l'interface Collection. Elle n'étend pas fonctionnellement la collection. interface, mais est plus avancée que l'interface Collection Strict. Contrairement à l'interface List, les éléments de l'interface Set ne sont pas ordonnés et certaines règles sont utilisées pour garantir que les éléments stockés ne sont pas répétés.

Que signifie l’ensemble Java ?

La collection Set comporte de nombreuses sous-classes, nous en présentons ici deux : java.util.HashSet et java.util.LinkedHashSet rassemblent.

Caractéristiques : Il y aura certaines règles pour garantir que les éléments stockés ne sont pas répétés. Les éléments de l'interface Set ne sont pas ordonnés

①Les éléments ne sont pas répétés

②éléments non ordonnés (faisant référence à un accès non ordonné)

Table de hachage : tant qu'un objet personnalisé est stocké dans la table de hachage, la classe à laquelle appartient l'objet personnalisé doit remplacer la méthode hashCode&equals

⑴Collection HashSet

La couche inférieure est le nouvel objet HashMap sous-jacent implémenté via HashMap Seule la clé est utilisée et la valeur n'est pas utilisée pour pointer vers l'adresse unifiée new Object()<.>

Introduction à l'API :

java.util.HashSet est une classe d'implémentation de l'interface Set. Les éléments qu'elle stocke ne sont pas répétables et les éléments ne sont pas ordonnés (c'est-à-dire que les éléments qu'elle stocke ne sont pas répétables). c'est-à-dire que l'ordre d'accès est incohérent). L'implémentation sous-jacente de java.util.HashSet est en fait un support java.util.HashMap qui détermine l'emplacement de stockage des éléments de la collection en fonction de la valeur de hachage de l'objet, ce qui lui confère de bonnes performances d'accès et de recherche. La manière de garantir l’unicité des éléments repose sur : les méthodes hashCode et equals.

Caractéristiques :

①Aucun élément répété

②Ordre d'accès incohérent

③Bonnes performances d'accès et de recherche

④Le La façon dont l'unicité de l'élément dépend de : la méthode hashCode et égal à

La structure (table de hachage) de la collection HashSet pour stocker les données :

dans JDK1 Avant .8, le la couche inférieure de la table de hachage a été implémentée à l'aide d'un tableau + liste chaînée Même si une liste chaînée était utilisée pour gérer les conflits,

les listes chaînées avec la même valeur de hachage étaient toutes stockées dans une liste chaînée. Cependant, lorsqu'il y a de nombreux éléments dans un compartiment,

, c'est-à-dire lorsqu'il y a de nombreux éléments avec des valeurs de hachage égales, l'efficacité de la recherche séquentielle par valeur de clé est faible.

Dans JDK1.8, le stockage de la table de hachage est implémenté par tableau + liste chaînée + arbre rouge-noir

Lorsque la longueur de la liste chaînée dépasse le seuil (8), la liste chaînée. est converti en un arbre rouge-noir, ce qui réduit considérablement le temps de recherche.

En bref, l'introduction des arbres rouge-noir dans JDK1.8 a grandement optimisé les performances de HashMap

Donc, pour nous, garantir le caractère unique des éléments de la collection HashSet est en fait basé sur le.

de l'objet Décidé par les méthodes hashCode et égal. Si nous stockons un objet personnalisé dans la collection,

alors pour garantir son unicité, nous devons remplacer les méthodes hashCode et égal à pour établir une méthode de comparaison appartenant à l'objet actuel.

Résumé : Avant la version 1.8, il était implémenté via la couche inférieure de la table de hachage à l'aide d'un tableau + liste chaînée

Dans la version 1.8, il était implémenté via le stockage de la table de hachage à l'aide d'un tableau + liste chaînée + rouge -arbre noir (la longueur de la liste chaînée dépasse le seuil (8), convertir la liste chaînée en un arbre rouge-noir, ce qui réduit considérablement le temps de recherche) Pour garantir que les éléments sont uniques, les méthodes hashCode et égal à réécrit pour établir une méthode de comparaison appartenant à l'objet actuel

HashSet stocke les éléments de type personnalisé (Points clés) :

Lors du stockage des éléments de type personnalisé dans HashSet, vous devez réécrire les méthodes hashCode et égal à dans l'objet.

Établissez votre propre méthode de comparaison pour vous assurer que les objets de la collection HashSet sont uniques

⑵LinkedHashSet

HashSet garantit que les éléments sont uniques, mais les éléments sont stockés dans aucun ordre, nous devons donc garantir l'ordre. Que devons-nous faire ? Il y en a un sous la sous-classe HashSet java.util.LinkedHashSet, qui est une structure de stockage de données qui est une combinaison de liste chaînée et de liste chaînée. table de hachage.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn