La classe HashSet fait partie du Java Collections Framework, fournissant une collection rapide et non ordonnée qui n'autorise pas les éléments en double. Il est construit au-dessus du HashMap, ce qui signifie qu'il hérite des mêmes avantages en matière de complexité temporelle mais se concentre uniquement sur unicité des éléments. Dans cet article, nous explorerons le fonctionnement de HashSet, ce qui le rend unique et pourquoi il est différent des autres collections.
Un HashSet est :
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); // Parameterized constructor using a collection Set setWithCollection = new HashSet(Arrays.asList(4, 4, 3)); // Default constructor with default capacity 16 Set set = new HashSet();
set.add(1); set.add(2); set.add(1); // Duplicate value is ignored System.out.println(set); // Output -> [1, 2]
Si vous devez remplacer les valeurs en double au lieu de les ignorer, HashSet ne sera pas le bon choix. En effet, il donne la priorité à unicité des éléments.
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); System.out.println(setWithInitialCapacity.size()); // Output -> 0
Même si la capacité de setWithInitialCapacity est de 5, la size est de 0 car la taille reflète le nombre d'éléments présents dans l'ensemble, et non la capacité initiale. Vous pouvez considérer la capacité comme l'espace de stockage interne, qui s'ajuste à mesure que des éléments sont ajoutés.
// Parameterized constructor using a collection SetsetWithCollection = new HashSet(Arrays.asList(4, 4, 3)); System.out.println(setWithCollection); // Output -> [3, 4] or [4, 3]
Si vous devez conserver des éléments triés, envisagez d'utiliser un TreeSet, qui garantit que les éléments sont disposés par ordre croissant.
Dans les entretiens, une question courante est de savoir si vous pouvez récupérer un index d'un élément dans un HashSet. La réponse est Non, car HashSet utilise un mécanisme de hachage pour stocker les éléments, et non une structure basée sur un index comme une liste ou un tableau.
Puisque HashSet est soutenu par un HashMap, il utilise les clés de la carte pour stocker des éléments, tandis que les valeurs ne sont pas pertinentes. C'est pourquoi chaque élément d'un HashSet doit être unique, tout comme les clés d'un HashMap.
HashSet est un outil puissant lorsque vous avez besoin d'une collection rapide et non ordonnée qui évite les doublons. Bien qu'il offre une O(1) complexité temporelle pour la plupart des opérations, il lui manque des fonctionnalités telles que le tri et l'indexation. Pour les développeurs, connaître la relation entre HashSet et HashMap permet de comprendre son fonctionnement interne et de mieux utiliser le cadre des collections.
Dans le prochain article, nous explorerons une question d'entretien courante fréquemment posée lors des entretiens pour tester les connaissances des candidats sur les concepts de collections.
Principes de base de Java
Les essentiels de l'entretien de tableau
L'essentiel de la mémoire Java
Bon codage !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3